链接时产生Map文件作用和必要性
来源:互联网 发布:外卖软件排行 编辑:程序博客网 时间:2024/05/05 21:28
可以要求linker产生map文件(例如GNU Linker ‘ld’的-m参数),虽然每套编译工具产生map文件格式可能都不一样,但它的基本用途就是记录项目中每一个Symbol之LMA与VMA的对应关系。这个map文件很有用,我们可以从map文件中得到下列信息:
·程序各区段的寻址是否正确
·程序各区段的size,即目前存储器的使用量
·程序中各个symbol的地址
·各个symbol在存储器中的顺序关系(这在调试时很有用)
·各个程序文件的存储用量
map文件不是程序,所以不会有注释在里面
做出可执行文件下载到机器上,你如何知道程序段或数据段会不会太大,会不会超过ROM或RAM的size?你如何知道Link脚本有没有写错,每个程序区段都确实寻址到符合机器的存储器设定?当然你可以下载进机器运行就知道了吗? 但是认为负责整合的工程师一定要检查下map文件,有些问题只会造成系统的不稳定,而不会马上死机,这种问题最麻烦。
例如,数据超过RAM的size,在测试时可能不会马上出问题,只有在用到高地址的数据时才可能会压到其他变量,只要系统不会马上用到这个被破坏变量,那么,当下也就不会感觉程序有问题,当发现系统有问题时,极有可能已经不在相关的功能上了,这对调试会造成很大的困扰,一定要尽量预防。
至于检查的方法很简单,只要搜寻各个区段的起始和结束地址,以及你自己在Link脚本定义的变量,确认其LMA,VMA和size都没有问题就可以了。
- 链接时产生Map文件作用和必要性
- System.map、vmlinuz、initrd.img的产生和作用
- System.map、vmlinuz、initrd-2.4.7-10.img的产生和作用
- System.map、vmlinuz、initrd-2.4.7-10.img的产生和作用
- System.map文件的作用
- System.map文件的作用
- System.map文件的作用
- System.map文件的作用
- System.map文件的作用
- System.map文件的作用
- System.map文件的作用
- System.map文件的作用
- System.map 文件的作用
- System.map 文件的作用
- wince 应用程序崩溃原因分析data abort----通过产生MAP和COD文件的方式
- 提问的必要性和不必要性
- Windows7下无法删除exe文件,或频繁链接时产生LNK1168错误
- 令arm链接器生成map文件
- CATransition 的初级应用及type属性
- fedora安装apach,sql,php
- C++ 虚拟继承
- Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
- 在jsp页面 用s标签 比较日期和当前日期
- 链接时产生Map文件作用和必要性
- IIC总线协议
- spring security3.x学习(6)_认证详细流程和认证异常
- Xcode: Unable to open project… cannot be opened because the project file cannot be parsed
- C++重要知识点小结---2
- 解决页面分页乱码
- OCP-1Z0-052-V8.02-155题
- 阿里巴巴2013年9月17日面试题
- 视频播放器MP4的简单实现