• Lv1
    粉丝0

积分0 / 贡献0

提问1答案被采纳0文章0

作者动态

    系统里面没有backtrace,提示backtrace: symbol not found

    benxiaohai1017 显示全部楼层 发表于 2026-3-24 13:37:47

    问题描述

    我用的是 Openharmony v5.1.0 Release 小型系统

    按照 https://gitcode.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md 移植我们的C++应用到小型系统上去。

    SDK使用的是 https://repo.huaweicloud.com/harmonyos/os/5.1.0-Release/ohos-sdk-windows_linux-public.tar.gz 因为我们的应用代码也比较大,所以我先弄了个最简单的helloworld,经过测试是可以正常运行的,然后加入glog,运行提示backtrace: symbol not found,我想一定是glog用到了backtrace。 经过了解,去掉glog,基于helloworld弄了个测试backtrace的代码,发现就是系统里没有backtrace的实现。 请各位老师不吝赐教,如何让下面的代码运行起来。

    #include <stdio.h>
    #include <execinfo.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <unistd.h>
    
    int foo2();
    int foo1() {
        printf("foo1(): call foo2()\r\n");
        foo2();
        return 0;
    }
    int foo2()
    {
        void *buffer[100];
        int nptrs;
        int *addr = NULL;
    
        nptrs = backtrace(buffer, 100);
        printf("backtrace() return %d address\n", nptrs);
    
        int fd = open("bt.log", O_WRONLY | O_CREAT | O_TRUNC, 0644);
        if (fd == -1) {
            perror("open");
            return 1;
        }
    
        backtrace_symbols_fd(buffer, nptrs, fd);
        return 0;
    }
    
    int main()
    {
        printf("main(): call foo1()\r\n");
        foo1();
        return 0;
    }

    编译运行,得到结果如下:

    # ./Demo                                                               
    Error relocating ./Demo: backtrace: symbol not found
    Error relocating ./Demo: backtrace_symbols_fd: symbol not found

    您尚未登录,无法参与评论,登录后可以:
    参与开源共建问题交流
    认同或收藏高质量问答
    获取积分成为开源共建先驱

    Copyright   ©2025  OpenHarmony开发者论坛  京ICP备2020036654号-3 | 京公网安备11030102011662号 |技术支持 Discuz!

    返回顶部