linux centos8不产生core怎么设置
要在CentOS 8中生成core文件,您需要执行以下步骤:
-
确保系统已安装"gdb"和"coreutils"软件包。如果尚未安装,可以使用以下命令安装它们:
sudo dnf install gdb coreutils -
确保已在系统上启用了core文件生成。编辑"/etc/security/limits.conf"文件并添加以下行:
* soft core unlimited * hard core unlimited -
重新启动系统或重新登录以使更改生效。
-
使用以下命令检查系统的core文件生成配置:
ulimit -a | grep core您应该看到类似以下内容的输出:
core file size (blocks, -c) unlimited如果没有看到类似的输出,可能是由于其他配置文件限制了core文件生成。您可以尝试查找和编辑其他配置文件,如"/etc/security/limits.d/*"文件夹中的文件。
-
确保要生成core文件的程序在运行时未禁用core文件生成。您可以使用以下命令检查程序是否禁用了core文件生成:
ulimit -c如果输出为"0",则表示core文件生成已禁用。您可以使用以下命令启用core文件生成:
ulimit -c unlimited如果输出为"unlimited",则表示core文件生成已启用。
-
确保要生成core文件的程序未使用"setrlimit"函数将core文件生成限制为零。您可以使用"gdb"命令从终端启动程序并检查"ulimit"值:
gdb -ex run --args <program> (gdb) run (gdb) shell ulimit -c如果输出为"0",则表示core文件生成已禁用。您可以使用以下命令在"gdb"中启用core文件生成:
(gdb) shell ulimit -c unlimited如果输出为"unlimited",则表示core文件生成已启用。
-
确保要生成core文件的程序未使用"prctl"系统调用将core文件生成限制为零。您可以使用"gdb"命令从终端启动程序并检查"prctl"值:
gdb -ex run --args <program> (gdb) run (gdb) shell /sbin/sysctl -a | grep core_pattern如果输出类似于以下内容,则表示core文件生成已禁用:
kernel.core_pattern = |/bin/false您可以使用以下命令修改"/etc/sysctl.conf"文件以启用core文件生成:
sudo vi /etc/sysctl.conf在文件的末尾添加以下行:
kernel.core_pattern = core保存文件并退出。
-
重新启动系统以使更改生效。
现在,当程序崩溃时,应该会在当前工作目录中生成一个core文件。您可以使用"gdb"来分析这个core文件并查找崩溃的原因:
gdb <program> <core-file>
请注意,生成core文件可能会消耗大量磁盘空间,因此建议在生成完core文件后及时删除它们
原文地址: https://www.cveoy.top/t/topic/iEt9 著作权归作者所有。请勿转载和采集!