直接贴代码:
#include <execinfo.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void myfunc3(void)
{
int j, nptrs;
#define SIZE 100
void *buffer[100];
char **strings;
nptrs = backtrace(buffer, SIZE);
printf("backtrace() returned %d addresses\n", nptrs);
backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO);
}
void myfunc(void)
{
myfunc3();
}
int main(int argc, char *argv[])
{
myfunc();
return 0;
}
程序运行结果:
[home@root ~]$ g++ -rdynamic t.cpp -o t
这里必须的参数是 -rdynamic