TRACE32——C源码关联1

TRACE32——C源码关联1

要想实现C源码的调试,前提是必须加载好对应的符号表信息。

但有些时候,加载了符号表信息,但是还是不能正确显示C源代码:

图片

造成这种现象的原因一般是,调试环境的C源码目录,和编译时的工程目录有较大差异,TRACE32无法自动寻找并匹配对应的C文件。

出现这种情况后可以使用如下几种方法进行匹配:

方法一

sYmbol.SourcePATH.SetRecurseDir *

执行后,会弹出一个对话框进行选择,您可以选择您的C工程的最顶层的目录即可。或者直接将路径写在命令里:

sYmbol.SourcePATH.SetRecurseDir D:\my_project

这个命令执行后,会从设定的目录开始递归往下查找,直到找到所有的源码文件。

这个方法简洁高效,能解决大部分场景下代码匹配不上的问题:

图片

但当源码工程中含有同名文件时,上述方法找到的文件可能并不是您需要的那个;或者当工程目录很庞大时,用这种方式匹配源码可能会比较费时。所以也可以使用第二种方法:

方法二

sYmbol.SourcePATH.Translate <original_path> <new_path>

例如,以Linux内核文件vmlinux为例,加载符号表后,我们可以执行命令:

symbol.list.source

source一列,查看vmlinux文件编译时的源码路径

图片

可以看到,编译时的源码路径为Linux下的:

\home\user\linux-kernel\linux-3.4

但是实际调试时候,我们是在Windows环境下,假设我们已经把同一份源代码拷贝到Windows下的:

C:\T32_ARM\debug\sources

图片

这时候,就可以用这个命令命令来进行路径的替换和关联:

sYmbol.SourcePATH.Translate "\home\user\linux-kernel\linux-3.4" "C:\T32_ARM\debug\sources"

如果这条命令在脚本里太长,阅读或者修改不方便,可以通过 ** 进行换行:

sYmbol.SourcePATH.Translate \ 
"\home\user\linux-kernel\linux-3.4" \
"C:\T32_ARM\debug\sources"

除此之外,我们还可以把上面的替换操作 和 加载符号表的操作整合到一个命令中:

方法三

只需要在Data.LOAD.Elf命令后面再加两个参数:

/StripPART 用于剔除编译时的目录

/Path 用于设定新的查找目录

整合后如下:

Data.LOAD.Elf D:\vmlinux /NoCODE /StripPART "\home\user\linux-kernel\linux-3.4" /PATH "C:\T32_ARM\debug\sources"

如果太长,可以换行:

Data.LOAD.Elf D:\vmlinux /NoCODE \
/StripPART "\home\user\linux-kernel\linux-3.4" \
/PATH "C:\T32_ARM\debug\sources"

更多关于C源码关联的更多介绍,请查阅相关文档:

  • <T32安装目录>\pdf\training_hll.pdf
  • https://www2.lauterbach.com/pdf/\training_hll.pdf
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值