首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux中对于core资料的分析<转载>

2012-12-22 
linux中对于core文件的分析转载当我们的There is absolutely no warranty for GDB.??Type show warrant

linux中对于core文件的分析<转载>

当我们的There is absolutely no warranty for GDB.??Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
Core was generated by `./core_dump_test'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/tls/libc.so.6...done.
Loaded symbols for /lib/tls/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
#0??0x080482fd in core_test () at core_dump_test.c:7
7? ?? ?? ???str[1] = 'T';
(gdb) where
#0??0x080482fd in core_test () at core_dump_test.c:7
#1??0x08048317 in main () at core_dump_test.c:12
#2??0x42015574 in __libc_start_main () from /lib/tls/libc.so.6
GDB中键入where,就会看到程序崩溃时堆栈信息(当前函数之前的所有已调用函数的列表(包括当前函数),gdb只显示最近几个),我们很容易找到我们的程序在最后崩溃的时候调用了core_dump_test.c 第7行的代码,导致程序崩溃。注意:在编译程序的时候要加入选项-g。您也可以试试其他命令, 如 fram、list等。更详细的用法,请查阅GDB文档。
core文件创建在什么位置
在进程当前工作目录的下创建。通常与程序在相同的路径下。但如果程序中调用了chdir函数,则有可能改变了当前工作目录。这时core文件创建在chdir指定的路径下。有好多程序崩溃了,我们却找不到core文件放在什么位置。和chdir函数就有关系。当然程序崩溃了不一定都产生core文件。
什么时候不产生core文件
在下列条件下不产生core文件:
( a )进程是设置-用户-ID,而且当前用户并非程序文件的所有者;
( b )进程是设置-组-ID,而且当前用户并非该程序文件的组所有者;
( c )用户没有写当前工作目录的许可权;
( d )文件太大。core文件的许可权(假定该文件在此之前并不存在)通常是用户读/写,组读和其他读。
利用GDB调试core文件,当遇到程序崩溃时我们不再束手无策。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/78838/showart_1385395.html

热点排行