<strong>解决方案</strong>
系统调试器支持对自重定位的程序(如u-boot)进行源码级调试。
自定位程序是一个在运行期间重新定位自己的代码和数据部分的程序。
这些ELF中的调试信息并没有提供关于程序部分将被重新定位到哪里的细节。
由于这个原因,你必须向调试器提供关于程序部分将被重新定位的地址的额外信息。
有两种方法可以做到这一点,可以通过SDK GUI或命令行(XSDB)。
<strong>SDK GUI:</strong>
更新系统调试器的启动配置,以提供程序部分重新定位的地址。
勾选 "这是一个自重定位的程序",并提供下面屏幕截图中的地址。
<img src="http://xilinx.eetrend.com/files/2022-01/wen_zhang_/100557320-241016-tul…; alt="">
启动调试配置。
当程序部分在运行期间被重新定位时,调试器将有足够的信息来支持对重新定位的部分进行源码级调试。
<strong>XSDB:</strong>
使用memmap命令提供程序段被分配到的地址。
在Xilinx的wiki页面上有一个如何调试U-Boot的例子,可以作为一个例子使用。
<pre>
memmap -reloc <addr> -file <path-to-elf></pre>
Xilinx wiki 页面上有一个如何<a target="_blank" href="https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842557/Debug+U-… U-Boot</a>的例子,可以作为一个例子使用。