前言
在编程过程中,我们可能常常遇到程序可以通过编译, 但在运行时出现Segment fault(段错误)。 产生段错误就是访问了错误的内存段。
产生段错误时,并不像编译错误一样会提示到文件的某一行, 而是没有任何信息, 这使得我们的调试变得困难起来,特别是代码量比较大的时候,单步调试很麻烦。这时段错误转储的core文件就派上用场了。
配置
如果想让系统在信号中断造成的错误时产生core文件, 我们需要在shell中按如下设置:
#设置core大小为无限
ulimit -c unlimited
#设置文件大小为无限
ulimit unlimited
以上设置仅本次有效,下次重启需要重新设置。
下面修改/etc/sysctl.conf文件,对产生的core文件进行配置:
在文件末尾添加下面一行
kernel.core_pattern=/tmp/core-%e
并修改kernel.core_uses_pid = 1 为
kernel.core_uses_pid = 0 这样core文件的格式就是
core-可执行文件的名字,这里我把进程号去掉了,觉得进程号在此处没多大用处。文件所在目录为/tmp下,也可以自己修改为可执行文件所在目录,这样比较直观。
然后运行命令:
sysctl -p /etc/sysctl.conf
假设将其值改变为:”/home/duanb