linux下无法生成core文件

参考链接:

​​​​​​https://www.cnblogs.com/sunbin2019/articles/10988995.htmlhttps://www.cnblogs.com/sunbin2019/articles/10988995.html

通常情况下,只要设置了ulimit -c unlimited,在程序崩溃后就会在当前目录下生成core文件

首先通过以下代码查看core_pattern文件,该文件指定了core文件生成的路径。从该路径下找生成的core文件,同时如果该文件路径的开头是管道符‘|’则说明生成的core文件被作为参数送给后面的文件了。

cat /proc/sys/kernel/core_pattern

如果没有路径或者是管道符开头的,需要修改core_pattern。该文件应该是不能直接修改,会拒绝访问,就算用sudo指令强制修改,最后也可能和我一样,就算用‘!‘也无法强制退出vi,无法保存。

该文件需要用如下的方式修改:

方法1:用vi打开/etc/sysctl.conf

sudo vi /etc/sysctl.conf

在最后一行添加如下代码:

kernel.core_pattern=core_%e_%p_%t

等于号后面的路径用于指定生成的core的路径,如不加前缀,则生成在当前目录下。后面的%代表core对应的ELF,ELF运行时的进程号和运行的开始时间。

完成编辑后按下esc输入以下代码将修改写入并退出

:wq

最后shell中输入如下代码,将修改同步到core_pattern文件:

sudo sysctl -p /etc/sysctl.conf

此时输入以下代码查看core_pattern就发现修改成功了:

cat /proc/sys/kernel/core_pattern

 再接着执行可执行文件就能发现生成了core文件:

方法2:通过echo的方式写入,可以参考以下博客:

linux下不产生core文件的原因_linux_Small-K-DevPress官方社区 (csdn.net)icon-default.png?t=N4HBhttps://huaweicloud.csdn.net/63563a72d3efff3090b5b5b3.html?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1-120870746-blog-125546025.235%5Ev36%5Epc_relevant_default_base&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1-120870746-blog-125546025.235%5Ev36%5Epc_relevant_default_base&utm_relevant_index=1

你可能感兴趣的:(linux,centos,运维)