linux生成core文件

关闭错误收集系统apport

ubuntu有一个默认的错误搜集系统apport,必须要关掉之后才能生成core文件

1
2
3
sudo service apport status
sudo service apport stop
sudo systemctl disable apport

设置corefile生成

打开corefile生成

设置core文件大小,默认是0,所以不会生成core文件

1
2
3
4
ulimit -c  # 若结果是0,则不会生成core文件
ulimit -c unlimited # 不限制core文件大小
echo "ulimit -c unlimited" >> ~/.bashrc # 选择当前使用的终端
echo "ulimit -c unlimited" >> ~/.zshrc # 选择当前使用的终端

设置core文件路径

!!注意,路径必须普通用户可读可写,否则生成core文件会失败!!

1
2
3
4
5
6
sudo mkdir /corefile
sudo chmod 777 /corefile
echo "/corefile/core-%e-%p-%t" | sudo tee /proc/sys/kernel/core_pattern

# 下面的命令会永久生效,否则每次重启都得重新设置路径
echo "kernel.core_pattern=/corefile/core-%e-%p-%t" | sudo tee /etc/sysctl.d/60-core-pattern.conf

测试

可以通过一个小方法测试产生core文件

1
kill -s SIGSEGV $$