
我已经启动了GDB并连接到远程目标,然后我使用GDB的add-symbol-file命令,如下所示:
add-symbol-file arch/arm/boot/compressed/vmlinux 0x20008000 -readNow
当我为该地址设置断点时,它会陷入正确的位置 – 当它分支到内核时.但是,GDB显示了来自arch / arm / boot / compressed / head.S源的错误行.它落后了4条线.我怎样才能解决这个问题?
我也尝试将-s section addr选项添加到add-symbol-file with -s .start 0x20008000;这导致完全相同的问题.
解决方法 在使用低级调试进行编译时,有汇编程序宏可以打印出来.您必须确保宏适合您的电路板.linux-latest/arch/arm$find . -name deBUG-macro.S | wc 56 56 2306
找到您的电路板的文件,并确保命中正确的串行端口寄存器.您可以使用JTAG检测代码.这些宏用在解压缩代码中.当然配置* CONfig_DEBUG_LL *.
最有可能的是ATAG不正确或其他要求之一. Checkout文档/ arm / Booting以确保正确设置寄存器.请注意,最近的内核有一个新要求来发送dt列表.
总结以上是内存溢出为你收集整理的linux-kernel – 调试Linux内核预解压缩阶段全部内容,希望文章能够帮你解决linux-kernel – 调试Linux内核预解压缩阶段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)