首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addr2line get行号始终返回0

addr2line get行号始终返回0
EN

Stack Overflow用户
提问于 2018-08-17 11:13:43
回答 1查看 713关注 0票数 2

我使用下面的代码来获取回溯

代码语言:javascript
复制
void print_backtrace(void) {
    static const char start[] = "BACKTRACE ------------\n";
    static const char end[] = "----------------------\n";

    void *bt[1024];
    int bt_size;
    char **bt_syms;
    int i;

    bt_size = backtrace(bt, 1024);
    bt_syms = backtrace_symbols(bt, bt_size);
    for (i = 1; i < bt_size; i++) {
        size_t len = strlen(bt_syms[i]);
        std::cout << bt_syms[i] << std::endl;
    }
    free(bt_syms);
}


int main() {
    print_backtrace();
    return 0;
}

输出结果为:

代码语言:javascript
复制
/home/roroco/Dropbox/c/ro-c/cmake-build-debug/ex/test_backtrace_with_line_number
/home/roroco/Dropbox/c/ro-c/cmake-build-debug/ex/test_backtrace_with_line_number(main+0x9) [0x400d0b]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7ff20985c830]
/home/roroco/Dropbox/c/ro-c/cmake-build-debug/ex/test_backtrace_with_line_number(_start+0x29) [0x400b29]

当我使用addr2line将addr转换为行号时,返回的总是"??:0",如何获取真实的行号?

代码语言:javascript
复制
roroco@roroco ~/Dropbox/c/ro-c $ addr2line -e /home/roroco/Dropbox/c/ro-c/cmake-build-debug/CMakeFiles/3.12.0/CompilerIdCXX/a.out 0x400d0b
??:0
roroco@roroco ~/Dropbox/c/ro-c $ addr2line -e /home/roroco/Dropbox/c/ro-c/cmake-build-debug/CMakeFiles/3.12.0/CompilerIdCXX/a.out 0x7ff20985c830
??:0
roroco@roroco ~/Dropbox/c/ro-c $ addr2line -e /home/roroco/Dropbox/c/ro-c/cmake-build-debug/CMakeFiles/3.12.0/CompilerIdCXX/a.out 0x400b29
??:0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-17 12:40:03

事实证明,

代码语言:javascript
复制
/home/roroco/Dropbox/c/ro-c/cmake-build-debug/CMakeFiles/3.12.0/CompilerIdCXX/a.out

不是您构建的可执行文件(它对应于CMake执行的编译器测试)。

相反,您可以尝试执行以下操作:

代码语言:javascript
复制
addr2line -e /home/roroco/Dropbox/c/ro-c/cmake-build-debug/ex/test_backtrace_with_line_number

其中test_backtrace_with_line_number对应于您构建的可执行文件。它应该是与CMakeLists.txt中的add_executable命令相关联的名称

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51887906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档