阅读量:0
在Linux中,可以使用以下几种方法来打印堆栈信息:
使用gdb调试器:
- 编译时添加
-g
选项以启用调试信息。 - 运行程序时,在终端中输入
gdb <可执行文件>
启动gdb调试器。 - 在gdb命令行中,输入
run
命令来运行程序。 - 当程序崩溃或者需要打印堆栈信息时,输入
bt
命令来打印堆栈信息。
- 编译时添加
使用backtrace函数:
- 在代码中包含
<execinfo.h>
头文件。 - 调用
backtrace
函数来获取堆栈信息。 - 使用
backtrace_symbols
函数将堆栈信息转换为可读格式并打印出来。
- 在代码中包含
以下是一个简单的示例代码:
#include <stdio.h> #include <execinfo.h> void printStackTrace() { void* buffer[100]; int size = backtrace(buffer, 100); char** symbols = backtrace_symbols(buffer, size); printf("Stack Trace:\n"); for (int i = 0; i < size; i++) { printf("%s\n", symbols[i]); } free(symbols); } void funcB() { printStackTrace(); } void funcA() { funcB(); } int main() { funcA(); return 0; }
编译运行上述代码后,会打印出堆栈信息。