gdb步骤没有按预期工作

ks1*_*322 9 c++ linux gdb static-linking

我在Linux上调试静态多线程x86-64 C++应用程序.

我可以在函数上设置断点并停止它们,我可以逐步遍历函数体.但是当我尝试进入另一个函数时,gdb不会停止它的开始,它似乎只是继续执行.当我中断程序执行时,gdb进入破坏状态并变得无法使用:

(gdb) bt
Target is executing.
(gdb) c
Continuing.
Cannot execute this command while the selected thread is running.
(gdb) 
Run Code Online (Sandbox Code Playgroud)

作为一种变通方法,我可以使用stepi几次代替step,stepi按预期工作.这种行为可能是什么原因?除了使用之外还有其他解决方法stepi吗?我正在使用gdb 7.6和gcc 4.7.1.

Emp*_*ian 12

这种行为可能是什么原因?

这是GDB中的一个错误.它设置了一个临时断点并期望它被击中.但是断点没有被击中(可能是因为它设置在错误的位置),并且GDB的内部状态机让所有人感到困惑.

除了使用stepi之外还有其他解决方法吗?

您可以尝试从CVS升级到top-of-trunk GDB版本,如果GDB仍然坏了,请报告GDB bugzilla中的错误.