TRACE32的⼀些常⽤命令
TRACE32的⼀些常⽤命令
我们使⽤Trace32最主要⽤途有两个:程序下载和程序调试。下载⽬前各个项⽬都有相应的.cmm⽂件(类似于批处理⽂
件.bat),在此⽂件中,Trace32把对FLASH擦除/编程的插件下载到⼿机的SRAM中,然后把控制权交给此插件,详细过程就不在此叙述,这⾥主要是介绍⼀些我们在程序调试过程中常⽤的⼀些命令。
1.把调试⽤的.elf⽂件下载到⽬标板中
命令:d.load.elf *.elf 或者直接输⼊elf⽂件路径:d.load.elf d:\p200\surfcr.elf
说明:此命令把.elf⽂件中的调试符号信息下载到Trace32中,⼆进制代码下载到⽬标板中的代码段存储区域。如果代码段对应的存储体是SRAM,那么代码
能够真实的下载到SRAM中(最常见的就是EVB板条死)。如果存储体是FLASH
,由于FLASH程序的擦写需要特殊的命令序列,所以执⾏完下载命令后,虽然
Trace32没有报错,但实际上代码没有下载进去。这个时候需要⽤cmm⽂件把代
码下载到FLASH中去。
2.elf⽂件下载进去后,在调试之前还需要做⼀些准备⼯作
a.map.bonchip 0x0—0x3ffff(FLASH的地址范围)
如果程序下载到SRAM中,此命令不⽤执⾏,如果是FLASH,⼀般情况下都需要执⾏此条命令,否则⽆法设置断点,⽬前⼤多数CPU在ICD调试模式下只⽀持两个硬件断点。
⽀持所加路径的C源码以及汇编代码显⽰。
3.以上⼯作做完后,就可以利⽤Trace32强⼤的调试功能来调试程序了(可惜到现在我
们只是⽤到了其中的⼀部分)。
a.查看ARM寄存器。⼀般使⽤在调试/查看汇编代码的情况下使⽤。
b.查看存储器单元以及存储器映射的寄存器内容。注意:MSM5105的寄存器具有只
读和只写属性(SoftWare Interface中有描述),对于只写属性的寄存器,虽然能够看到寄存器的内容,但不可信。
有时调试需要直接对寄存器或者变量进⾏赋值,可以双击对象,在命令⾏中加以更改。
c.设置断点。断点调试应该是我们最常⽤的调试⼿段了,具体设置⽅法可以在代码处
直接双击设置或取消设置,或者通过⼯具条设置:
flash控件怎么下载点击Browse,选择要设置断点的函数。
d.读出存储器区域的内容,存成⽂件,以便于和原⽂件进⾏⽐较。⽐如怀疑代码区内
容被更改或者在软件部制作完整的.bin本时,都需要⽤到此命令。
Data.save.Binary FileName Address
e.STEP(F2)/STEP OVER(F3)/GO(F7)
f.有时侯,Trace32不能正确显⽰临时变量的值,这个时候可以通过查看汇编代码的
⽅式确定临时变量真实的值。
g.查看函数的调⽤关系
有时需要弄清楚某⼀函数是哪个函数调⽤的,可以通过在此函数处设置断点,等程序停在此断点后,点击菜单view/Stackframe就能看到。
h.但有时候采⽤上述⽅法⽆法看到调⽤关系,这是可以通过R14寄存器(⼦程序链接
寄存器)来实现,eg:程序因为某种异常,跳到了中断向量表处。此功能对于定位程序重启之类的问题还是很有效的。第⼀步:设置断点
第⼆步:查看R14寄存器
能够看到R14寄存器的值是0x1BA9C8,此地址就是调⽤处代码的地址,具体内容可以点击Indirect List查看:
第三板:查看调⽤代码
i.其他
以上是在命令⾏中输⼊的⼀些常⽤命令,其他的很多功能我还没有⽤过,相信这些功能对于我们的调试还是很有帮助的。⼤家调试时可以多试⼀试,如果有意外的发现,还请和⼤
家⼀起分享,共同提⾼我们对调试⼯具的掌握程度!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。