linux怎么打印堆棧信息

小億
536
2023-10-27 10:49:53

在Linux中,可以使用以下幾種方法來打印堆棧信息:

  1. 使用gdb調(diào)試器:

    • 編譯時(shí)添加-g選項(xiàng)以啟用調(diào)試信息。
    • 運(yùn)行程序時(shí),在終端中輸入gdb <可執(zhí)行文件>啟動(dòng)gdb調(diào)試器。
    • 在gdb命令行中,輸入run命令來運(yùn)行程序。
    • 當(dāng)程序崩潰或者需要打印堆棧信息時(shí),輸入bt命令來打印堆棧信息。
  2. 使用backtrace函數(shù):

    • 在代碼中包含<execinfo.h>頭文件。
    • 調(diào)用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ì)打印出堆棧信息。

0