当前位置:网站首页>TRACE32——C源码关联1
TRACE32——C源码关联1
2022-08-05 06:42:00 【Rainmicro】
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
边栏推荐
- Shiny02---Shiny exception solution
- Redis进阶
- Hash 这些知识你也应该知道
- AI + video technology helps to ensure campus security, how to build a campus intelligent security platform?
- Falsely bamboo brother today and found a localization of API to use tools
- FPGA parsing B code----serial 4
- 专用机终端安装软件后报IP冲突
- PCI Pharma Services Announces Multi-Million Dollar Expansion of UK Manufacturing Facility to Meet Growing Demand for Global High Potency Drug Manufacturing Services to Support Oncology Treatment
- Shared memory + inotify mechanism to achieve multi-process low-latency data sharing
- MAYA船的建模
猜你喜欢
MySQL: JDBC programming
typescript65-映射类型(keyof)
Modeling of the MAYA ship
Using printf function in STM32
AI + video technology helps to ensure campus security, how to build a campus intelligent security platform?
TCP sticky packet unpacking problem + solution
女生做软件测试会不会成为一个趋势?
给网站套上Cloudflare(以腾讯云为例)
MySQL: basic part
UDP组(多)播
随机推荐
在anaconda Promat界面import torch通过,在jupyter notebook中报错的问题(仅提供思路理解!)
TCP的粘包拆包问题+解决方案
After the firewall iptable rule is enabled, the system network becomes slow
typescript66-分析partial的实现
Redis
360度反馈调查表中的问题示范
技术分析模式(十一)如何交易头肩形态
《基于R语言的自动数据收集》--第3章 XML和JSON
Technical Analysis Mode (7) Playing the Gap
2022 Fusion Welding and Thermal Cutting Operation Certificate Exam Questions and Mock Exams
原来使Maya Arnold也能渲染出高质量作品!超赞小技巧
基于KECA-IGWO-KELM的间歇过程故障诊断方法
FPGA解析B码----连载4
不太会讲爱,其实已经偷偷幸福很久啦----我们的故事
2022.7.29好题选讲(计数专题)
合工大苍穹战队视觉组培训Day9——相机标定
Flink Learning 11: Flink Program Parallelism
游戏思考19:游戏多维计算相关:点乘、叉乘、点线面距离计算
Advanced Redis
typescript60-泛型工具类型(readonly)