接触core dump

初学C者,很容易遇到core dumped错误。 一般都知道是内存错误。但错误具体在哪,出了什么问题,往往就无从下手了。下面简单说一下如果搞定core dumped问题。

core dumped,就是由于进程试图访问不该访问的内容等原因,被系统捕捉到之后,扔(dump)给用户的一张情况说明表。

对于用户,首先要设置允许接受系统扔过来的core文件。我们可以通过

$ ulimit -a 

查看用户限制状况。  -c 一行对应的,就是用户允许生成的core文件大小。默认为零,就是不分配空间接受core文件。我们可以改为4096,或者其他适合大小,但不建议设置unlimited,以免系统垃圾文件过多。这里设置为4091

$ulimit -c 4096


接下来可以手动强制dumping core。 

首先编辑一个简单的c程序, 在里面加上sleep语句,以防止进程过早结束。 编译时加上-g选项。然后运行。在运行结束前,按下CTRL+\ 。 如果程序在后台运行,就执行$ kill -3 pid, 这pid要换成对应进程编号。然后

$ls core.*

就可以观察到生成的core文件。假定生成的core文件为 core.8888。


接下来使用gdb调试

gdb a.out core.8888


输入where,查看崩溃时堆栈信息。 其他的就和普通gdb调试一模一样了。

你可能感兴趣的:(接触core dump)