当我在linux下用gdb调试我的C++程序时?我使用-g进行编译,事实上,我在调试器中看到很多信息,但它一直告诉我,我的程序正常退出,并且没有显示任何错误。 虽然我只是运行我的程序,但它并没有完成,并表明并非一切都好(malloc.c中的一个断言失败)。什么可能是gdb运行我的程序,只是bash运行我的程序显示不同的输出?
我也有情况下,GDB,只是运行的程序表现出不同的错误消息。错误是alwazys与错误的指针,内存访问有关。
valgrind实际上一样。有没有可能使用valgrind不可能?特别是如果有不同的流程和共享库?如果我通过以下方法启用压缩错误:valgrind -v --trace-children = yes prog1(valgrind)--trace-children = yes prog1给我没有错误(我不能是真的) ,我得到了关于重定向冲突的警告(也不像是错误)。
不,程序未运行优化。这是什么意思? – yui
如果使用-g -02或除了-g 00之外的任何其他编译程序,您正在运行优化,这将导致gdb开始动作怪异。 – Grammin
用g ++ -g 02编译它确实不会改变gdb说程序正常退出的事实。 – yui