linux内核堆栈打印方法
dump_stack()
或
__backtrace()
linux应用层堆栈打印方法
int backtrace(void **buffer, int size);
获取当前的调用栈信息,结果存储在buffer中,返回值为栈的深度,参数size限制栈的最大深度,即最大取size步的栈信息。
char **backtrace_symbols(void *const *buffer, int size);
把backtrace获取的栈信息转化为字符串,以字符指针数组的形式返回,参数size限定转换的深度,一般用backtrace调用的返回值。
void backtrace_symbols_fd(void *const *buffer, int size, int fd);
它的功能和backtrace_symbols差不多,只不过它不把转换结果返回给调用方,而是写入fd指定的文件描述符。
示例:
void myfunc3(void)
{