早上好,我正在尝试使用Valgrind调试器来完成一个程序。
我的valgrind命令行是valgrind -tool memcheck --leak-check=full --db-enable=yes ./MatchUpAcurate.exe.
我在Centos Linux 5.5版上使用valgrind-3.5.0和gdb版本7,0.1-23.el5_5.2。
当valgrind询问附加到调试器的问题时,我输入Yes。然后,valgrind调试器返回:4428: return new tuple2<int,A>(2, i++, p->next());
当我尝试使用gdb步骤或继续命令时,valgrind说
[New Thread 0x410fd10 (LWP 6548] Cannot find user-level thread for LWP 6551: generic error.
当我尝试在valgrind命令行上使用valgrind --single-step=yes
调试器选项时,valgriind说Bad option aborting
。
任何valgrind用户都能告诉我如何单步执行C ++源代码或继续完成程序吗?谢谢。
答案 0 :(得分:13)
我问valgrind开发人员如何创建valgrind调试器。这是他们所说的;
从valgrind网站下载3.6.0源文件。
然后你必须应用错误214909中的补丁。
正确编译后,您可以像这样启动应用程序:
valgrind --vgdb=yes --vgdb-error=0 ./prog
然后在另一个窗口中:
gdb ./prog
target remote | vgdb
不要启动外部gdbserver:补丁的作用是在valgrind中集成gdbserver。 这个集成在valgrind中的gdbserver由--vgdb = yes。
答案 1 :(得分:11)
您还可以在3.7.0版本中获取vgdb。从发行说明:
valgrind在线手册中有更多信息。