在linux下使用core dump和map文件调试

来源:互联网 发布:数控锥螺纹g92编程实例 编辑:程序博客网 时间:2024/05/21 18:45
1.概念1). 什么是core dumpcore dump即是内存dump(现在通常是写在一个叫core的file 里面),core也许来自远古时候,那时候人们使用线圈制作内存,而线圈就叫做core。
2). 什么是map文件MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,是整个程序工程信息的静态文本,通常由linker生成。注:map文件在各种编译器中都可以使用,不限于gcc.2.使用1). core dump如果用的是bash的话, 在/etc/profile里加上(或者修改)一条: ulimit -c 0则禁止core dump.使用core dump -c 尺寸  限制core dump的文件大小。gcc -g xxxxx.c -o xxxx-g是必须的,否则找不到符号,只能显示栈调用信息。(-g则可以显示到哪一行出错)gdb execute-file core-filewherebtprint ...detail see gdb.2). map文件的生成在linker阶段生成,是程序链接的内存映像,表示了某个符号(函数和全局变量等)的地址。ld -Map map-fileorgcc -Wl,-Map,map-file3). 配合使用如果没有-g选项,在栈调用信息中,不能打印出具体到某一行的源码,但是,根据栈调用时的地址,可以根据map文件来找到相应的函数。

原创粉丝点击