[英]“add-symbol-file” can't recognize .bss & .data symbols when using kgdb to debug kernel modules
[英]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.