C++ valgrind+gdb的Eclipse CDT设置

C++ valgrind+gdb的Eclipse CDT设置,c++,eclipse,gdb,valgrind,eclipse-cdt,C++,Eclipse,Gdb,Valgrind,Eclipse Cdt,如何在Eclipse中使用gdb调试valgrind运行 我这样启动程序: A航站楼: valgrind vgdb=yes --vgdb-error=0 ./a.out 它可以从另一个终端进行调试,如下所示: B航站楼: gdb ./a.out target remote |vgdb 但我不能让它在Eclipse中工作。。。 所以,我想在Eclipse中以图形方式完成我可以通过终端B中的命令行完成的事情 我尝试了许多方法在Eclipse中设置调试配置,但都无法使其正常工作 我最近得到的是通过

如何在Eclipse中使用gdb调试valgrind运行

我这样启动程序:

A航站楼:

valgrind vgdb=yes --vgdb-error=0 ./a.out
它可以从另一个终端进行调试,如下所示:

B航站楼:

gdb ./a.out
target remote |vgdb
但我不能让它在Eclipse中工作。。。 所以,我想在Eclipse中以图形方式完成我可以通过终端B中的命令行完成的事情

我尝试了许多方法在Eclipse中设置调试配置,但都无法使其正常工作

我最近得到的是通过C++连接到应用程序,在其中我根据这个帖子加载了一个定制的GDBIIT:

启动该配置后,valgrind运行继续到下一个错误,但是Eclipse随后报告应用程序终止,并且它还终止gdb会话

另外两个可能有用的链接: ,

我正在使用Eclipse4.5.1mars.1

编辑:

我取得了一些进展——我发现了两种几乎如我所愿有效的方法:

一, 我在.gdbinit中使用C/C++应用程序设置:

file /path/to/a.out
target remote | /usr/bin/vgdb
set sysroot /
define run
注意,我必须特别地将file语句添加到gdbinit中。 这种情况的缺点是,当我尝试退出/终止时,Eclipse会等待程序永远终止,因为它从未真正开始运行它。。。。我必须单击“终止”,然后手动删除

如果你能告诉我如何防止这种情况发生,那就太好了

二, 我用C++来连接到应用程序。 Eclipse将向我请求要附加到的进程;我搜索并选择valgrind。 我现在可以单步执行代码,但不能在Eclipse中设置断点。 我只能通过break file.cpp:line在gdb shell中完成这项工作


有什么办法解决这个问题吗?

不是我最喜欢的解决方案,但它是在Ubuntu/Eclipse上工作的:

以下是我的步骤:

创建外部工具: 名称:示例启动器 位置:/usr/bin/valgrind 参数:-vgdb=full-vgdb error=0-泄漏检查=full-v./MyProg.elf argument1。。。 创建一个定制的gdb init文件 文件gdb_vgdb_init的内容:

target remote | /usr/bin/vgdb
set sysroot /
define run
创建新的调试配置 类型:C/C++应用程序 名称:示例调试器 C/C++应用程序:MyProg.elf 参数->程序参数:无需参数 调试器->GDB命令文件:/path/to/GDB_vgdb_init 创建一个新的发布组 新的发射组应包括:

在运行模式下创建外部工具示例启动器 在调试模式下创建了C/C++应用程序示例调试器 然后启动启动组。Launchgroup将启动valgrind,包括连接到它的gdb