Chinaunix

标题: 关于使用map文件调试的问题 [打印本页]

作者: vaqeteart    时间: 2011-11-10 14:36
标题: 关于使用map文件调试的问题
我使用:"gcc -o helloworld helloworld.c -Wl,-Map,helloworld.map"
命令生成了我的程序的map文件,但是这个文件信息很乱,找了半天也没有找到哪里有相关的资料可以参考。
所以,有三个问题,希望高手解答。
如何使用这个map文件进行调试?
如何得知map文件中内容的含义?
map文件的格式是否可以通过某种方式调整为容易阅读的格式?

能够帮忙指明一个开始的方向,就行。谢谢!!
作者: caiyijun1987    时间: 2011-11-13 10:09
1.配合使用如果没有-g选项,在栈调用信息中,不能打印出具体到某一行的源码,但是,根据栈调用
时的地址,可以根据map文件来找到相应的函数。
2.map文件的生成在linker阶段生成,是程序链接的内存映像,表示了某个符号(函数和全局变量等)的地址。
3.应该可以,不过这种格式已经够友好了
作者: linuxfellow    时间: 2011-11-19 22:50
map一般不用于调试。只是你想看的时候可以参考一下。它的内容主要告诉你, 程序的memory layout. 不同的section: .bss/.sbss/.txt/.stack etc被放在什么地方
调试用的是.elf或.out或其他各式。 调试器会从这些格式文件里读取debug info。 如果你自己想读这些格式文件, 就用objectdump之类的工具读。当然你可以通读.elf有关的文档,自己解读hex玛
作者: vaqeteart    时间: 2011-11-22 11:30
谢谢各位!
作者: lexken    时间: 2011-11-23 10:36
学习了.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2