ubuntu 下怎么生成core dump文件

haway_mi 高级软件工程师  2010-08-10 08:58:44
tong ti mu ;
...全文
1461 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jianfei111 2010-10-31
/etc/security/limits.conf改一下就可以了
回复
jianfei111 2010-10-31
/etc/security/limits.conf改一下就可以了
回复
jianfei111 2010-10-31
/etc/security/limits.conf 里面该一下就可以 。怎么该 你一看就知道了。
回复
s030702614 2010-08-11
ulimit -c unlimited设置core文件大小不限
编译时加入-g 选项
运行程序./a.out,如果发生断错误,会在工作目录自动生成一个core文件
用gdb调试:gdb -core=core
file ./a.out
bt

//core.cpp内容
#include <iostream>
using namespace std;
int main()
{
int a[100];
a[-100000]=50;
cout << a[-100000]<<endl;
return 0;
}
具体操作如下:
fzu@fzu-desktop:~/ac$ ulimit -c unlimited
fzu@fzu-desktop:~/ac$ g++ -g core.cpp
fzu@fzu-desktop:~/ac$ ./a.out
段错误 (core dumped)
fzu@fzu-desktop:~/ac$ gdb -core=core
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
(no debugging symbols found)
Core was generated by `./a.out'.
Program terminated with signal 11, Segmentation fault.
[New process 9634]
#0 0x080486f4 in ?? ()
(gdb) file ./a.out
Reading symbols from /home/fzu/ac/a.out...done.
(gdb) bt
#0 main () at core.cpp:6
(gdb)

可见错误发生在第六行
回复
haway_mi 2010-08-11
akaedu@akaedu-desktop:~/m/810$ ulimit -c 1024
akaedu@akaedu-desktop:~/m/810$ ulimit -c
1024
akaedu@akaedu-desktop:~/m/810$ ./a.out
退出 (core dumped)
akaedu@akaedu-desktop:~/m/810$ ls
2 akae-linux-signal-2010.08.10.tar.gz sig
2.c akae-linux-system-programming-signal-yjs-2010.04.26.ppt sig.c
2.c~ a.out
3.c Makefile
akaedu@akaedu-desktop:~/m/810$
回复
wwwunix 2010-08-11
应该在你的当前目录下会产生一个core.xxxx的文件(xxxx为进程号)。
你看看产生的时候的屏幕提示是什么
回复
haway_mi 2010-08-11
提示产生了core可ls找不到
回复
haway_mi 2010-08-11
#4 #5的我都式了不行阿
回复
wwwunix 2010-08-11
ulimit -c 1024
回复
lz是这个意思不?

google之, gdb的强大用法.

本人只知道,产生core后,

gdb -c core 能看到 core dump的 '现场'

where //函数堆栈

q //退出
回复
gdb 单步调试?
回复
haway_mi 2010-08-11
不是。我是说调试程序时如果出现段错误,或在程序运行时,按ctrl+\会生成个core doump
回复
Linux-Torvalds 2010-08-10
你是指内核调试的那个core文件吗?/proc/kcore就是。
回复
发动态
发帖子
UNIX文化
创建于2007-08-27

2152

社区成员

Linux/Unix社区 UNIX文化
申请成为版主
社区公告
暂无公告