长久不写代码,突然发现ubuntu当前运行目录下没有生成core文件,记录如下,避免下次重找。
1、首先开启core文件权限:
ulimit -c
如果结果为0, 则表示没有开启,需要开启,如下:
通过ulimit -c unlimited 设置后在ulimit -c 查看,结果为unlimited。
2、设置core文件保存目录,一般设置为程序运行目录:
echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern
%e表示可执行程序
%p表示进程id
%t表示时间
这三个参数可加可不加
3、如果依然没有产生core文件
应该是默认开启了apport服务,ubuntu目前使用这个服务手机错误信息,但会阻止core文件的产生,这个服务用处不大,可以关闭。
sudo systemctl disable apport.service
4、永久生效
第1、2步的命令只在当前shell下有效,写文件可以使其永久生效。
a)在环境变量中增加开启core文件:vi ~/.bashrc ,新增 ulimit -c unlimited,
使环境变量生效:source ~/.bashrc
b)设置core文件生成目录:vi /etc/sysctl.conf ,新增:kernel.core_pattern=core-%p,
使生效: sysctl -p