Core Dump

 

什么是Core Dump?

Core Dump是当进程异常终止时(比如内存访问出错)操作系统生成的一个文件(通常叫"core"),记录了该进程终止时的内存映像及此时CPU的状态(处理器寄存器等)。之所以叫core是因为计算机历史上在DRAM技术出现之前最流行的内存技术就叫core(由王安发明)。它的主要作用是调试程序。根据 core dump记录的信息,我们可以快速定位是程序的哪个地方出了错误,然后仔细分析代码以排除错误。

怎样产生Core Dump?

在Linux系统下,用ulimit命令可以查看和设置是否产生core文件。"ulimit -c"的输出若是0,则不产生core文件。"ulimit -c filesize"设置产生core文件的大小(单位 kB),或"ulimit -c unlimited"产生core文件,大小无限制。若设置core文件的大小,产生的core文件有可能被截断。用"ulimit -c 0"可以禁止产生core文件。

core文件默认保存在进程的当前目录中,文件名默认为core。不过这些都可以设置,具体查看core(5)。例如,为了防止core文件被后来的core文件覆盖,echo 1 > /proc/sys/kernel/core-uses-pid给core文件加上 PID。

怎样使用Core Dump调试?

  1. 假设源文件名为test.c。编译该文件,注意加入调试信息(gcc -g选项)。
    $ gcc -g test.c 
  2. 运行该程序,产生Core Dump(假设core文件名为core)。
    $ ./a.out Segmentation fault (core dumped) 
  3. 用gdb查看core文件以定位错误。
    $ gdb ./a.out core 
    由于编译时加入了调试信息,此时应该可以看到是哪条语句导致了错误,用where命令可以查看调用栈以确定错误的根源。

参考文献

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值