经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下会产生一个叫做core的文件。
要产生coredump文件,首先需要确认当前会话的ulimit –c,若为0,则不会产生core文件。
可以这样设置:ulimit -c unlimited 就可以了。不过这个只是在当前终端有效哈。
这样,如果程序coredump掉了,就会在程序的执行目录产生一个core文件。
我们可以通过下面命令查看是否是coredump文件。
$ file core
里面就会有core的字段
接下来就可以通过gdb调试core文件,分析错误的地方了。以aa.c编译成bb执行文件,生成了core文件为例,执行以下:
$ gdb bb core
就能看到出错的地方了~