微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Raspberry Pi上,backtrace()返回0帧

我正在玩glibc的backtrace(),我似乎无法让它在我的RaspBerry Pi上正常工作.一切都没有警告编译,但backtrace()返回0作为存储的帧数.完全相同的代码确实在x86_64(Debian stable)上产生了回溯,backtrace()返回6帧:

/*test.c*/
#include dio.h>
#include 
#Makefile
CFLAGS=-Wall -Wextra -g
LDFLAGS=-rdynamic

x86_64上的输出(gcc(Debian 4.7.2-5)4.7.2与GNU libc6:amd64 2.13-38 deb7u1):

Hello,Backtrace
Last 6 frames:
./test(foo+0x19)[0x4009a5]
./test(bar+0x9)[0x4009e5]
./test(baz+0x9)[0x4009f0]
./test(main+0x13)[0x400a05]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xfd)[0x7f9286ddbead]
./test[0x4008a9]

RaspBerry Pi上的输出(gcc(Debian 4.6.3-14 rpi1)4.6.3与GNU libc6:armhf(2.13-38 rpi2 deb7u1)):

Hello,Backtrace
Last 0 frames:

我已经验证RaspBerry Pi上编译的可执行文件正在将帧指针和链接寄存器存储到堆栈中. objdump -d测试摘录:

0000882c 

我在论坛或Stack Overflow上找不到这样的东西.难道我做错了什么?我没有检查过什么?

最佳答案
必须使用-funwind-tables编译应用程序,以使backtrace()在ARM上运行.

原文地址:https://www.jb51.cc/linux/440322.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐