如何产生core dump文件

首先是系统设置:

1
ulimit -c unlimited

  将core文件的大小限制设置成无限制,当然也可以指定大小。

1
sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t

  设置core文件的位置及格式。

其次在编译的时候打开调试模式:

1
gcc -ggdb -o0 file.c -o bin

  运行程序,如果发生core dump,将会在/tmp下产生以core开头的文件,就是core dump文件。

举个例子:

1
2
3
4
5
6
7
8
// file.c
int main(void)
{
    char *p;
    *p = 'a';
 
    return 0;
}

 编译:

1
gcc -ggdb -o0 file.c -o bin

 运行

1
2
./bin
Segmentation fault (core dumped)

 在/tmp下生成一个core文件:core-main.206270.xxx.1697612689

调试core文件

1
gdb bin /tmp/core-bin.206270.xxx.1697612689

 得到:

1
2
3
4
5
Core was generated by `./main'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000aaad43140720 in main () at main.c:4
4           *p = 'a';
(gdb)

  

posted on   半山随笔  阅读(254)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示