鸣涧 发表于 2022-11-25 23:36:25

使用 addr2line 分析 ZigBee JN516x 的 crash stack dump

使用 addr2line 分析 ZigBee JN516x 的 crash stack dump

      大家好,我是宇宙洪荒,是专业研究 NXP-ZigBee 的洪荒开拓者。今天给大家带来的是 addr2line。在内核执行过程中偶尔出现崩溃时,addr2line 可用于快速定位出出错的位置,进而找出代码 bug。期待该次分享能帮助到大家。
一、addr2line 是什么
       addr2line (它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。

二、如何获得 addr2line

       Linux 系统一般会集成这个工具,本文重点介绍 Windows 系统下如何获取该工具。方法很多,我这里仅介绍两种方式       第一种:安装 MinGW(网上教程很多,自行搜索),安装后在其安装目录的 bin 文件夹里会包含 addr2line.exe ,此时只用保证环境变量 path 中包含该路径即可。       第二种:本博文档案下已存放 addr2line.exe ,可以将其直接拷贝至 C:\NXP 下。

三、addr2line 如何使用


[*]执行 Window + R 命令,输入 cmd ,如下:

[*]进入 C:\NXP,输入 exe -help 可以看到如下介绍:


[*] 这里常用的是以下参数

[*] -e :指定可执行映像名称
[*] -a :显示函数地址
[*] -f :显示函数名称
例如命令 addr2line -e sample.axf -a -f 6000243d 60002f49 将会显示名称为 sample.elf 的可执行映像,在地址为6000243d60002f49 对应的函数名称及源代码信息。执行结果如下:C:\NXP>addr2line.exe -e C:\Users\54500\Desktop\i.MXRT106X_John_20210430\project\Objects\sample.axf -f 6000243d 60002f49ACMP1_IRQHandlerC:\Users\54500\Desktop\i.MXRT106X_John_20210430\project/../devices/arm/startup_MIMXRT1062.S:319BOARD_InitDebugConsoleC:\Users\54500\Desktop\i.MXRT106X_John_20210430\project/../board/board.c:44



四、通过 addr2line 分析ZigBee JN516x 的crash stack dump

      当 JN516x crash 后,将在串口打印输出调用栈信息,通过这些信息可以分析定位出现问题的函数。         APP: Light Power Up         EPCR = a9a2d : EEAR = 7         Stack dump:         4007ec0 : ffffffff         4007ec4 : 000ab3dc         4007ec8 : 00000000         4007ecc : 000af718         4007ed0 : 0000fffe         4007ed4 : 0000000c         4007ed8 : 000ab3d6         4007edc : 04000960         4007ee0 : 00000000         4007ee4 : ffffffff


五、ZigBee 参考资料
       参考文档:         通过 addr2line 分析 ZigBee JN516x 的 crash stack dump.pdf
页: [1]
查看完整版本: 使用 addr2line 分析 ZigBee JN516x 的 crash stack dump