在Linux中,可以使用以下幾種方法來打印堆棧信息:
使用gdb調(diào)試器:
-g
選項(xiàng)以啟用調(diào)試信息。gdb <可執(zhí)行文件>
啟動(dòng)gdb調(diào)試器。run
命令來運(yùn)行程序。bt
命令來打印堆棧信息。使用backtrace函數(shù):
<execinfo.h>
頭文件。backtrace
函數(shù)來獲取堆棧信息。backtrace_symbols
函數(shù)將堆棧信息轉(zhuǎn)換為可讀格式并打印出來。以下是一個(gè)簡單的示例代碼:
#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;
}
編譯運(yùn)行上述代碼后,會(huì)打印出堆棧信息。