本站首页    管理页面    写新日志    退出


«January 2020»
1234
567891011
12131415161718
19202122232425
262728293031


公告

不知不觉6年了


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:〾堯仸〾的天空
日志总数:139
评论数量:503
留言数量:16
访问次数:2644003
建立时间:2005年4月23日




[资料]在Linux下产生并调试core文件
文章收藏

〾堯仸〾 发表于 2007-2-21 20:33:22

转载自: http://blog.china-pub.com/more.asp?name=uniware&id=35478 先看看我用的是个什么机器: $ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 i686 i386 GNU/Linux 再看看默认的一些参数,注意core file size是个0,程序出错时不会产生core文件了。 $ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedfile size (blocks, -f) unlimitedmax locked memory (kbytes, -l) 4max memory size (kbytes, -m) unlimitedopen files (-n) 2048pipe size (512 bytes, -p) 8stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 7168virtual memory (kbytes, -v) unlimited 写个简单的程序,看看core文件是不是会被产生。 $ more foo.c #include static void sub(void); int main(void){    sub();    return 0;} static void sub(void){    int *p = NULL;     /* derefernce a null pointer, expect core dump. */    printf("%d", *p);} $ gcc -Wall -g foo.c$ ./a.outSegmentation fault $ ls -l core.*ls: core.*: No such file or directory 没有找到core文件,我们改改ulimit的设置,让它产生。1024是随便取的,要是core文件大于1024个块,就产生不出来了。 $ ulimit -c 1024 $ ulimit -acore file size (blocks, -c) 1024data seg size (kbytes, -d) unlimitedfile size (blocks, -f) unlimitedmax locked memory (kbytes, -l) 4max memory size (kbytes, -m) unlimitedopen files (-n) 2048pipe size (512 bytes, -p) 8stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 7168virtual memory (kbytes, -v) unlimited $ ./a.outSegmentation fault (core dumped)$ ls -l core.*-rw------- 1 uniware uniware 53248 Jun 30 17:10 core.9128 注意看上述的输出信息,多了个(core dumped)。确实产生了一个core文件,9128是该进程的PID。我们用GDB来看看这个core。 $ gdb --core=core.9128GNU gdb Asianux (6.0post-0.20040223.17.1AX)Copyright 2004 Free Software Foundation, Inc.GDB is free software, covered by the GNU General Public License, and you arewelcome to change it and/or distribute copies of it under certain conditions.Type "show copying" to see the conditions.There is absolutely no warranty for GDB. Type "show warranty" for details.This GDB was configured as "i386-asianux-linux-gnu".Core was generated by `./a.out'.Program terminated with signal 11, Segmentation fault.#0 0x08048373 in ?? ()(gdb) bt#0 0x08048373 in ?? ()#1 0xbfffd8f8 in ?? ()#2 0x0804839e in ?? ()#3 0xb74cc6b3 in ?? ()#4 0x00000000 in ?? ()此时用bt看不到backtrace,也就是调用堆栈,原来GDB还不知道符号信息在哪里。我们告诉它一下: (gdb) file ./a.outReading symbols from ./a.out...done.Using host libthread_db library "/lib/tls/libthread_db.so.1".(gdb) bt#0 0x08048373 in sub () at foo.c:17#1 0x08048359 in main () at foo.c:8此时backtrace出来了。 (gdb) l8         sub();9         return 0;10     }1112     static void sub(void)13     {14         int *p = NULL;1516         /* derefernce a null pointer, expect core dump. */17         printf("%d", *p);(gdb)


阅读全文(32674) | 回复(2) | 编辑 | 精华
 


回复:在Linux下产生并调试core文件
文章收藏

fdsf(游客)发表评论于2010-5-7 11:06:10

[url=http://www.bj.com]北京[/url]<A HREF=http://www.bj.com TARGET=blank>北京</A>


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:在Linux下产生并调试core文件
文章收藏

HH(游客)发表评论于2009-8-4 11:52:39

FTYFYI

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:在Linux下产生并调试core文件
文章收藏

CARAOO(游客)发表评论于2007-12-7 15:58:10

谢谢分享技术

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.016 second(s), page refreshed 144346682 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号