#include #include #include #include "stacktrace.h"
/* 列印呼叫棧的最大深度 */
#define dump_stack_depth_max 16
/* 列印呼叫棧函式 */
void dump_trace() ;
char **stack_strings = null;
int stack_depth = 0;
int i = 0;
/* 獲取棧中各層呼叫函式位址 */
stack_depth = backtrace(stack_trace, dump_stack_depth_max);
/* 查詢符號表將函式呼叫位址轉換為函式名稱 */
stack_strings = (char **)backtrace_symbols(stack_trace, stack_depth);
if (null == stack_strings)
/* 列印呼叫棧 */
printf(" stack trace: \r\n");
for (i = 0; i < stack_depth; ++i)
/* 獲取函式名稱時申請的記憶體需要自行釋放 */
free(stack_strings);
stack_strings = null;
return;
}
列印函式呼叫棧
我有時候對於程式呼叫不明顯的時候,看程式很費勁,這時候我們希望把程式呼叫鏈列印出來。對於庫函式提供了執行緒介面。backtrace backtrace symbols backtrace symbols fd 其實網上的教程都是結合這個示例寫的。我的也不例外。直接上核心部分,如果你想看func 1的...
linux 列印引數呼叫棧和入參資訊
方法1 include include include obtain a backtrace and print it to stdout.void print trace void int main g stack.c g o stack rdynamic 方法2 include include ...
perf列印呼叫棧的過程
perf prepare sample perf callchain get perf callchain 上面的呼叫棧會使用 perf event output 0xffffffff811837f0 perf event output 0x0 0x80 kernel 0xffffffff81183...