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+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录<future>future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...