- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RealViewMDK中生成带调试信息和不带调试信息的AXF文件
深圳市英蓓特信息技术有限公司——ARM 开发工具专业提供商
RealView MDK 中生成带调试信息和不带调试信息的AXF 文件
一、问题:
在使用RealView MDK 和ULink 调试时常常发现生成的可执行文件axf 远远大于片上
SRAM 的大小,但却可以完全在片上SRAM 中调试而无须占用其它空间,例如SOC AT91RM9200
片上SRAM 大小为16KB,某个例程在默认配置下编译链接之后生成的可执行文件大小大于
200KB,但完全可以选择在片上SRAM 的调试方式,即仅占用片上16KB 的片上SRAM 而无须
占用其它空间,这是为什么呢?
二、原因:
原因在于生成的AXF 文件可能带有调试信息,这些调试信息在调试时是不必下到SRAM
中去的。真正下到SRAM 中的信息仅仅是可执行代码。其实去掉调试信息的可执行代码大小
会大大减小。
三、如何生成不带调试信息的AXF 文件:
在默认配置下一般生成的AXF 文件带有调试信息,我们可以用以下方法去掉调试信息。
在Project-Option-Output 中去掉Debug Information 选项前面的对勾。点击确定
之后,再重新编译链接即可看到生成的axf 文件大小大大减小。实际上我们在调试时需要
下到SRAM 中的代码就是这个文件的内容,对于那些调试信息是不下到SRAM 中的,这也就
是为什么能调试大小远大于SRAM 容量的axf 文件的原因所在。以下两个图分别是将带有调
试信息和不带调试信息的AXF 文件下到SRAM 中调试的汇编代码情况:
图一 带调试信息的AXF 文件调试反汇编情况
深圳总部:0755 25532557 | 销售邮箱:sales.realview@
华北办事处:010 | 华东办事处:021 | 华中办事处:027
深圳市英蓓特信息技术有限公司——ARM 开发工具专业提供商
图二 不带调试信息的AXF 文件调试反汇编情况
调试信息包含以下内容:
1、可以将源代码包括注释夹在反汇编代码中,并且我们可以随时切换到源代码中调试,
2、我们还可以对程序中的函数调用情况进行跟踪(用Watch Call Stack Window 查看)。
3、对变量进行跟踪(用Watch Call Stack Window 查看)。
而不带调试信息则没有这些功能。因此带调试信息的AXF 文件远大于不带调试信息的AXF
文件。
在做AT91RM9200 的ROM_BootLoader_test 实验时,如果加上调试信息,生成的AXF 文件大
小将在200KB 以上,而去掉调试信息时,生成的AXF 文件大小仅8KB,而AT91RM9200 片上SRAM
大小16KB,在调试带调试信息的AXF 文件时,实际上下到SRAM 中的内容仅只有8KB。这也就是
为什么可以调试远远大于片上SRAM 大小的axf 文件之原因所在。
四 如何减少调试信息
如果希望带调试信息,那么在目标文件和库中减少调试信息是非常有益的,减少调
试信息可以减少目标文件和库的大小、加快了链接速度、减小最终镜象的代码。以下几
种方法可用来减少每个源文件产生的调试信息:
深圳总部:0755 25532557 | 销售邮箱:sales.realview@
华北办事处:010 | 华东办事处:021 | 华中办事处:027
深圳市英蓓特信息技术有限公司——ARM 开发工具专业提供商
避免在头文件中条件使用#define,链接器不能移除共用的调试部分,除非这些部
分是完全一样的;
更改C/C++源文件,以使#included 包含的所有头文件有相同的顺序;
将头文件信息分成几个小块,也就是,尽量使用数量较多的小头文件而不使用较大
的单一头文件,这有利于链接器
文档评论(0)