linux core文件代码,Linux下如何生成core dump 文件(示例代码)

Linux下的C程序常常会因为内存访问等原因造成segment fault(段错误),如果此时core dump 的功能是打开的,在运行我们的可执行程序时就会生成一个名为core的文件,然后我们就可以用gdb对core文件来进行调式,还原发生错误的堆栈情况,这对于我们调试bug非常有帮助。

1. 使用  ulimit -a 可以察看当前系统core文件的大小限制;

使用  ulimit -c [kbytes] 可以设置系统允许生成的core文件大小。

如:

ulimit -c 0     --- 不产生core文件

ulimit -c 200  --- 设置core文件最大为200k

ulimit -c unlimited --- 不限制core文件大小

2.  我们先写一段会造成段错误的程序

20180110213900611042.png

编译运行结果如下:

20180110213900612995.png

此时察看我们当前文件路径并没有core文件生成。

3.  执行ulimit -a 察看当前系统设置:

20180110213900614949.png

此时我们看到当前系统core file size 为0,意思就是不产生core文件。

现在我们执行如下图的命令,不限制生成core文件的大小。

20180110213900615925.png

然后我们运行我们程序,可见core文件就生成了:

20180110213900616902.png

最后采用gdb来分析程序,察看堆栈情况:

20180110213900629598.png

从上述的输出中可以清楚看到,段错误出现在testCore.c的第6行,问题就已经定位到了。

很多系统默认生成core文件的大小都是0,像这样设置core文件大小,只在当前会话有效,如果关闭终端重新启动的的话就没有了,还需要输入上面的命令。

4.  如果要设置永久有效,可以修改/etc/security/limits.conf 文件, 找到 * soft core 0,修改为* soft core unlimited保存,这样每次启动时都会去读取这个配置文件。

20180110213900641317.png

如果遇到上述情况,打开limits.conf 出现警告这是一个只读文件,可以用chmod 命令来修改文件的权限,添加写权限。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值