微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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中的错误.

原文地址:https://www.jb51.cc/c/112296.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐