免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4898 | 回复: 4
打印 上一主题 下一主题

关于使用map文件调试的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-10 14:36 |只看该作者 |倒序浏览
我使用:"gcc -o helloworld helloworld.c -Wl,-Map,helloworld.map"
命令生成了我的程序的map文件,但是这个文件信息很乱,找了半天也没有找到哪里有相关的资料可以参考。
所以,有三个问题,希望高手解答。
如何使用这个map文件进行调试?
如何得知map文件中内容的含义?
map文件的格式是否可以通过某种方式调整为容易阅读的格式?

能够帮忙指明一个开始的方向,就行。谢谢!!

论坛徽章:
0
2 [报告]
发表于 2011-11-13 10:09 |只看该作者
1.配合使用如果没有-g选项,在栈调用信息中,不能打印出具体到某一行的源码,但是,根据栈调用
时的地址,可以根据map文件来找到相应的函数。
2.map文件的生成在linker阶段生成,是程序链接的内存映像,表示了某个符号(函数和全局变量等)的地址。
3.应该可以,不过这种格式已经够友好了

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
3 [报告]
发表于 2011-11-19 22:50 |只看该作者
map一般不用于调试。只是你想看的时候可以参考一下。它的内容主要告诉你, 程序的memory layout. 不同的section: .bss/.sbss/.txt/.stack etc被放在什么地方
调试用的是.elf或.out或其他各式。 调试器会从这些格式文件里读取debug info。 如果你自己想读这些格式文件, 就用objectdump之类的工具读。当然你可以通读.elf有关的文档,自己解读hex玛

论坛徽章:
0
4 [报告]
发表于 2011-11-22 11:30 |只看该作者
谢谢各位!

论坛徽章:
2
技术图书徽章
日期:2015-12-16 09:12:1619周年集字徽章-庆
日期:2019-09-12 16:09:19
5 [报告]
发表于 2011-11-23 10:36 |只看该作者
学习了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP