OpenHarmony开发者论坛
标题:
系统里面没有backtrace,提示backtrace: symbol not found
[打印本页]
作者:
benxiaohai1017
时间:
2026-3-24 13:37
标题:
系统里面没有backtrace,提示backtrace: symbol not found
[md]### 问题描述
我用的是 Openharmony v5.1.0 Release 小型系统
按照
[
https://gitcode.com/openharmony-sig/tpc
\_c\_cplusplus/blob/master/lycium/doc/ohos\_use\_sdk/OHOS\_SDK-Usage.md](
https://gitcode.com/openharmony- ... k/OHOS_SDK-Usage.md
)
移植我们的C++应用到小型系统上去。
SDK使用的是
[
https://repo.huaweicloud.com/har ... se/ohos-sdk-windows
\_linux-public.tar.gz](
https://repo.huaweicloud.com/har ... 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
```
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5