在GDB中,可以通过设置“autobacktrace”选项来自动打印堆栈跟踪。以下是包含代码示例的
打开GDB并调试程序。
在GDB提示符下输入以下命令以启用“autobacktrace”选项:
(gdb) set print backtrace on
调试程序并触发崩溃或异常。
GDB将自动打印堆栈跟踪,其中包含函数调用序列和对应的行号。
例如,以下是一个简单的C程序,它包含一个故意引发崩溃的函数“crash”:
#include
void crash() { char* ptr = NULL; *ptr = 'a'; }
int main() { crash(); return 0; }
对这个程序进行调试,并启用“autobacktrace”选项,可以得到以下输出:
(gdb) set print backtrace on (gdb) run Starting program: /home/user/crash [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault. 0x000000000040054c in crash () at /home/user/crash.c:5 5 *ptr = 'a'; (gdb) #0 0x000000000040054c in crash () at /home/user/crash.c:5 #1 0x0000000000400582 in main () at /home/user/crash.c:11 (gdb)
从输出中可以看到,程序崩溃时GDB自动打印了函数调用序列和行号,帮助我们快速定位问题的根本原因。
上一篇:Automaticallypopulatedateswithnodata
下一篇:Automaticallyresolvecertainserviceswhenscopeopens(在范围打开时自动解决某些服务)