C++ valgrind+gdb的Eclipse CDT设置
如何在Eclipse中使用gdb调试valgrind运行 我这样启动程序: A航站楼: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中设置调试配置,但都无法使其正常工作 我最近得到的是通过
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