首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试Linux内核预解压缩阶段

调试Linux内核预解压缩阶段
EN

Stack Overflow用户
提问于 2012-03-05 23:40:39
回答 1查看 2K关注 0票数 6

我试图在Linux内核zImage解压缩之前使用GDB来调试它。内核是在ARM目标上运行的,我有一个JTAG调试器,它与GDB服务器存根连接在一起。目标必须加载引导加载程序。引导加载程序从闪存读取内核映像,并将其放在0x20008000的RAM中,然后分支到该位置。

我已经启动GDB并连接到远程目标,然后使用GDB的add-symbol-file命令如下:

代码语言:javascript
复制
add-symbol-file arch/arm/boot/compressed/vmlinux 0x20008000 -readnow

当我为该地址设置一个断点时,它确实会在正确的位置设置陷阱--当它分支到内核时。但是,在arch/arm/boot/compressed/head.S**.的源代码中,GDB显示了错误的行。后面有四条线。我怎么解决这个问题?**

我还尝试将-s section addr选项添加到带有-s .start 0x20008000add-symbol-file中;这将导致完全相同的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-24 18:12:27

有一些汇编程序宏,在编译时打印出来的东西与低级别的调试。你必须确保宏适合你的董事会。

代码语言:javascript
复制
linux-latest/arch/arm$ find . -name debug-macro.S | wc
 56      56    2306

为您的董事会找到文件,并确保正确的串口寄存器被击中。您可以在不使用JTAG的情况下对代码进行测试。这些宏在解压缩代码中使用。当然,使用*CONFIG_DEBUG_LL*进行配置。

最有可能的是,ATAG是不正确的或其他要求之一。签出文档/arm/引导以确保正确设置寄存器。注意,最近的内核有一个新的要求,即发送dt列表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9575817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档