今天遇到个这样的需求,希望能当动态链接库中抛出异常时,能把调用栈打印出来。经过在google上一翻搜寻,找到了一些线索。 我的文件目录如下:当前目录下是main.cpp 和test/ test下面是A.h, A.cpp(定义一个类)和backtrace.h, backtrace.cpp
第一步,实现打印调用栈,backtrace函数实现如下: backtrace.cpp #include "backtrace.h" #include <unistd.h> // let prog point to the end of "cmd" int r = readlink("/proc/self/exe", prog, sizeof(cmd) - (prog-cmd)-1); FILE* fp = popen(cmd, "w"); |