eclipse - 在 Eclipse 中使用 LinuxTools 的 Valgrind 分析器进行远程调试

标签 eclipse debugging gdb valgrind remote-debugging

我有一个程序,希望使用 Linux Tools 远程 Valgrind 分析器在 Valgrind 下远程运行。

我通常使用 RSE 在 headless 服务器(具有特殊硬件,因此必须在该计算机上远程完成)上进行远程调试,效果很好。我的机器和目标都是Linux机器。

我现在正在尝试使用 Linux Tools 插件让 Valgrind 通过 Eclipse 工作。我在远程目标机器上安装了 Valgrind 3.10,我可以手动运行它(在 Eclipse 之外):

远程: valgrind --vgdb=full --vgdb-error=0/path/to/app --args

 vgdb --port=2345 --pid=XXXX

在本地,使用目标远程主机:2345与gdb连接。

但是,我无法弄清楚如何获取“Valgrind(远程)”Eclipse 工具来模拟此操作,模仿此处显示的“RemoteTools”设置: .

当我写入以“rse:/”开头的“To:”可执行文件时,分析工具设置窗口右上角出现错误,显示 [Valgrind 选项]: 无法确定 Valgrind 的版本。我应该在此处写什么才能获得有效的远程 Valgrind 连接?

最佳答案

尚未找到有关该主题的更多最新帖子,也许它对某人有用。我也没有设法将远程 valgrind 插件与 RSE 一起使用。似乎只有 dstore 连接类型适用于 Linux 工具远程 valgrind,因为 SSH 或 FTP 对我不起作用。 rseserver需要 Perl 和 Java,但我的目标中没有它们。

我必须通过 Launch Group 结合 this 使用这个复杂的解决方案和 this解决方案。前提条件:远程目标上安装了 valgrind 和 vgdb。

  1. 编写脚本start_remote_valgrind.sh

    设置-x 远程IP = 192.168.7.2 远程端口=2222 应用程序名称=测试应用程序 Remote_dir=/usr/local/bin/ local_dir=/home/项目名称/ ssh -T root@$remote_ip Killall -9 vgdb ssh -T root@$remote_ip Killall -9 valgrind scp $local_dir$app_name root@$remote_ip:$remote_dir$app_name ssh root@$remote_ip valgrind --vgdb=full --vgdb-error=0 --leak-check=full -v $remote_dir$app_name & sleep 1 ssh root@$remote_ip vgdb --port=$remote_port

  2. 创建调试配置“运行”->“调试配置”->“C/C++ 远程应用程序”: 2.1 在主选项卡上设置项目名称和应用程序二进制文件 2.2 在配置窗口底部单击“选择其他”链接并选择“GDB (DSF) 手动远程启动器” 2.3 在“调试器”选项卡上为您的目标平台设置 GDB 调试器,命令行脚本 .gdbinit。 2.4 在调试器->连接选项卡上设置 TCP 连接、远程 IP 和端口。 enter image description here enter image description here

  3. 创建外部工具运行->外部工具->外部工具配置... enter image description here

  4. 创建启动组运行->调试配置->启动组 enter image description here 外部工具必须处于“运行”配置中,远程 gdb 必须处于“调试”中。这种方法的好处是远程 valgrind 输出打印在 Eclipse 控制台中,因此您不需要在单独的控制台中手动启动 vgdb 并在单独的窗口中查看消息。

关于eclipse - 在 Eclipse 中使用 LinuxTools 的 Valgrind 分析器进行远程调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26589252/

相关文章:

android - java.lang.RuntimeException 无法实例化

c - gcc 栈内存分配

gdb - 为远程目标生成核心文件?

android - java.lang.NoClassDefFoundError : com. facebook.android.Facebook

java.lang.ClassNotFoundException : com. sql.jdbc.Driver

java - 如何在 eclipse 摄入文本中制作文本框并将其用作变量

ruby-on-rails - 如何在 Ruby 调试器 (ruby-debug/rdebug) 中设置变量?

facebook - 本地开发时如何克服必须从站点 URL 派生的问题

c++ - 批评我的非侵入式堆调试器

python - 如何在 emacs 中从 gdb 获取输入(使用 python 脚本)