繁体   English   中英

为 MCU 应用程序添加符号文件,闪存上的偏移量未显示任何函数名称

[英]add-symbol-file for MCU app with offset on flash not showing any function names

我有一个在 imx-rt-1024 nxp 芯片上运行的应用程序。 我有一个引导加载程序和实际的固件应用程序。 我的引导加载程序位于 0x60000000,而我的固件应用程序通常位于 0x60020000。

但是该应用程序是使用 -fPIC(与位置无关的代码)编译的,因此我也可以将它闪存到闪存中的任何偏移位置。 它也部署在 0x600b0000 上。

当它在偏移应用程序中运行时,我可以将我的 JLink 调试器连接到应用程序,但是,它不会在任何断点处中断,因为它不知道如何映射符号(因为 elf 文件将所有地址映射到编译时间地址:0x60020000)。

读了一点之后,我应该能够使用如下偏移量加载我的 elf 文件的符号:

gdb> add-symbol-file Debug/iobox-imx-rt-1020.axf 90000

我的elf文件是'iobox-imx-rt-1020.axf',0x60020000和0x600b0000之间的偏移量是0x90000。

gdb 声称已加载符号,但之后我仍然无法破坏或看到任何符号/函数名称。

remove-symbol-file Debug/iobox-imx-rt-1020.axf
No symbol file found
add-symbol-file Debug/iobox-imx-rt-1020.axf 90000
add symbol table from file "Debug/iobox-imx-rt-1020.axf" at
    .text_addr = 0x15f90
(y or n) [answered Y; input not from terminal]
Reading symbols from Debug/iobox-imx-rt-1020.axf...

在此处输入图像描述

我究竟做错了什么? 我误解了偏移量吗? 它应该与 90000 不同吗?

我误解了偏移量吗?

可能。 偏移量应该是.text在运行时的地址,而90000 == 0x15f90不是。

使用readelf -WS Debug/iobox-imx-rt-1020.axf | grep .text readelf -WS Debug/iobox-imx-rt-1020.axf | grep .text找出.text的开始位置(可能是 PIE 二进制文件中的某个低值),并且(假设您的加载程序将文件映射到 0x600b0000)在add-symbol-file命令中使用0x600b0000 + $text_start

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM