一、检查服务器的core文件是否打开
ulimit -a //查看时候打开core
如果core file size 是0就是关闭的!服务一般都是关闭的!将他打开即可!
ulimit -c size//设置core file的大小,自定义
此时打开就可以生成了core文件了!
二、当程序崩溃时有(core dump)提示但是不生成core文件
这种情况可以检查,/proc/sys/kernel/core_pattern
这个路径下的值!如果是
|/usr/share/apport/apport/... 表示core文件被apport工具给默认处理了,此时,需要生成core文件们就需要
echo 'core' | sudo tee /proc/sys/kernel/core_pattern
注意,使用该指令需要有足够的权限!!
执行上述的指令后 ,再次查看如果是core就可以了!
除了上述的,修改/proc/sys/kernel/core_pattern 值以外,还可以直接将服务器中的apport给禁用掉!
sudo systemctl disable apport.service
三、测试
这里简单的来一个除0测试,此时程序会收到OS发送的8号信号SIGFPE,就会终止:
int main()
{int n = 10;std::cout << n / 0 << std::endl;return 0;
}
OK,希望对你有用!