我尝试使用 gdb
和 step
函数调试我的程序。
只要函数在同一个文件中,一切都可以正常工作。
但是如果函数在外面,gdb 会跳过它。
我该如何解决?
注意:
- 我使用
-ggdb
选项编译 - 我正在使用
GNU gdb Red Hat Linux (6.7-1rh)
(如果可能的话,出现在 gdb 的启动频率中)
例子:
#include "foo2.h" // contains function foo2
void foo(void){ printf("hello"); }
void main (void){
foo(); // debuggable -> jump into possible
foo2(); // not debuggable
}
最佳答案
使用 gdb 调试应用程序时,请使用 si (stepi) 而不是 ni (nexti)。 si 将进入其他函数,ni 停留在当前函数内。查看 http://sourceware.org/gdb/current/onlinedocs/gdb/Continuing-and-Stepping.html#Continuing-and-Stepping 处的文档更多信息(^F 表示 nexti 或 stepi)。
关于linux - GDB 不会介入一个文件之外的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12956486/