反汇编操作, 找出错误的地址对应的函数;以及添加错误堆栈打印函数后怎么使用addr2line -e hunter.debug 0x40b180

文章讲述了在单片机开发过程中遇到的问题,通过错误打印和使用addr2line工具定位到函数,以及学习伟东山老师的调试方法,包括print_backtrace和利用反汇编文件追踪调用关系。作者意识到可能是在信号处理函数注册和堆栈信息处理上存在问题,同时提到了借助GPT进行分析的可能性。
摘要由CSDN通过智能技术生成

1. 需要在代码中加入,并编译

90e78a03999644fb8c64f5a42e25dbce.png

5a5effb3bf7b42ef8d0e5bcbf5bad7d4.png

2.烧录代码运行后看到错误打印如下

4a1f33409792473bb658c5a014da4dfa.png

3.在刚刚烧录的文件对应的hunter.debug和hunter文件,执行如下操作 ,得出反汇编文件hunter1_elf 

zhanbb@hamedal:~/D40/0908/d40$ cd ~/D40/0908/d40/packshop/Trunk/Proj/Bin
zhanbb@hamedal:~/D40/0908/d40/packshop/Trunk/Proj/Bin$ ls
hunter  hunter.debug  hunter_elf
zhanbb@hamedal:~/D40/0908/d40/packshop/Trunk/Proj/Bin$
zhanbb@hamedal:~/D40/0908/d40/packshop/Trunk/Proj/Bin$
zhanbb@hamedal:~/D40/0908/d40/packshop/Trunk/Proj/Bin$
zhanbb@hamedal:~/D40/0908/d40/packshop/Trunk/Proj/Bin$ /opt/rockchip-linux/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objdump -D hunter.debug
 > hunter1_elf
zhanbb@hamedal:~/D40/0908/d40/packshop/Trunk/Proj/Bin$ ls
hunter  hunter1_elf  hunter.debug  hunter_elf

6933acbeec744069a7ac243caed924f6.png

然后反汇编文件中通过地址可以找出相应的函数,这里可以看出是失败了,没有找出,正常是会有找出的

cecdb756fa7b4faf8b16c460cfda2f49.png当然也可以在服务器通过指令

cd ~/D40/0908/d40/packshop/Trunk/Proj/Bin

 addr2line -e hunter.debug 0x40b180

来定位具体问题出在哪个函数

cf928bd0c7f14e3193fbec8763ae62a0.png

后期总结:看来伟东山老师的单片机开发过程中的2个调试绝招有感悟,发现这个使用print_backtrace​​​​​​​方法应该是可行的,具体为什么打印出来的堆栈信息不对,应该是注册信号处理函数的地方不对,还有就是当时应该根据他给的错误的堆栈地址,其看反汇编文件,通过反汇编文件一步一步看调用的函数关系来找到问题在哪,同时看不懂反汇编文件没事,可以让gpt分析。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文武先生hh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值