我正在尝试使用GDB在Linux内核zImage解压缩之前进行调试。内核运行在ARM目标上,我连接了一个带有GDB服务器存根的JTAG调试器。目标必须加载引导加载程序。引导加载程序从闪存中读取内核映像,并将其放置在RAM中的
我已经启动了GDB并连接到远程目标,然后我使用GDB的
当我为该地址设置断点时,它确实在正确的位置触发 - 就在分支到内核时。然而,GDB显示了来自
0x20008000
位置,然后跳转到该位置。我已经启动了GDB并连接到远程目标,然后我使用GDB的
add-symbol-file
命令,如下所示:add-symbol-file arch/arm/boot/compressed/vmlinux 0x20008000 -readnow
当我为该地址设置断点时,它确实在正确的位置触发 - 就在分支到内核时。然而,GDB显示了来自
arch/arm/boot/compressed/head.S
源代码的错误行。它落后了4行。我该如何解决这个问题?
我还尝试使用add-symbol-file
的-s section addr
选项,并使用-s .start 0x20008000
; 这导致完全相同的问题。