首页 > 解决方案 > 为什么我的 backtrace() 只能找到动态库的路径

问题描述

void testfunc3(){
    char* funcname[20];
    int n = 0 ;
    n = backtrace((void**)funcname,20);
    char** p_need_free = (char**)backtrace_symbols((void**)funcname,n);     
    int i = 0;
    for(i=0;i<n;i++){
        printf("funcname is : %s\n",p_need_free[i]);
    }
    free(p_need_free);
}
void testfunc2(){
    testfunc3();
}
void testfunc1(){
    testfunc2();
}
/** in another file **/
int main(){
    testfunc1();
    return 0;
}

这个项目有 2 个文件,main() 占用 1 个,其他函数占用另一个,后一个文件被编译为动态库。

标签: linuxdllbacktrace

解决方案


推荐阅读