TRACE32——加载符号表信息用于调试
劳特巴赫TRACE32可以显示目标芯片上运行的源码,并且可以通过相应的按钮和命令在C源码和汇编码之间切换。
但有的时候,连上目标芯片后,并不需要重新烧写代码,只需要调试板子上已有的代码就行,这时候就需要从ELF等文件中,加载调试信息(符号表信息),才能实现上面提到的源码显示功能。
调试信息(Debug Infomation)或者 符号表信息(Symbol),一般会被编译器生成到最终的可执行程序中,例如ELF文件,这时TRACE32便可以使用如下命令进行加载
Data.load.elf * /Nocode
其中最重要的一个参数:
/Nocode
表示这条命令,不加载ELF文件里的代码,只加载符号表信息。
另外,Data.load.elf 表示加载ELF文件,如果有其他格式的文件,可以用
Data.load * /Nocode
或者
Data.load.auto * /Nocode
其中*号表示弹出对话框,选择文件。如果需要,也可以直接指定文件路径
Data.load.auto D:\app.elf /Nocode
看一下效果:
未加载符号表:
加载符号表后:
重要信息
-
请查阅编译器手册来正确配置,确保ELF包含有调试信息
-
请确保命令中选择的ELF文件和当前芯片运行的程序完全一致,否则会出现函数或者变量显示错误的问题
当心PC指针被改写
**有些时候,编译生成的可执行程序中的符号表信息,还包含有程序入口地址。**直接加载这样的文件,会导致调试器把当前正常运行的PC指针改写。
如果不希望这样,可以通过/Noreg参数来去除符号表信息中的寄存器信息:
Data.load.auto * /Nocode /Noreg
多个ELF的符号表信息
如果需要加载多个ELF文件,默认情况,前一个ELF的符号表信息会被后一个ELF的符号表信息覆盖。
如果不希望这样,可以通过/Noclear参数来保留多个符号表信息
Data.load D:\boot.elf /Nocode
Data.load D:\app1.elf /Nocode /Noclear
Data.load D:\app2.elf /Nocode /Noclear
源码路径关联
有些时候,即使加载了符号表信息,还是没能正常显示C源码:
这种情况,只需要调整C源码的关联路径即可。
更多关于Data.load命令的使用方法和参数介绍,请查阅相关文档:
- <T32安装目录>\pdf\general_ref_d.pdf\Data章节
- https://www2.lauterbach.com/pdf/general_ref_d.pdf\Data章节