c – gdb步骤不能按预期工作

我在 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)

作为解决方法,我可以使用stepi几次而不是step,stepi按预期工作.
可能是这种行为的原因?除了使用stepi还有什么办法吗?
我使用的是gdb 7.6和gcc 4.7.1.

解决方法

What Could be the reason of this behavior?

这是GDB中的一个错误.它设置一个临时断点,并期望它被击中.但是断点不会受到打击(可能是因为它被设置在错误的地方),GDB的内部状态机让所有的困惑.

Is there any workarounds besides using stepi?

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...