要在CentOS 8中生成core文件,您需要执行以下步骤:

  1. 确保系统已安装"gdb"和"coreutils"软件包。如果尚未安装,可以使用以下命令安装它们:

    sudo dnf install gdb coreutils
    
  2. 确保已在系统上启用了core文件生成。编辑"/etc/security/limits.conf"文件并添加以下行:

    * soft core unlimited
    * hard core unlimited
    
  3. 重新启动系统或重新登录以使更改生效。

  4. 使用以下命令检查系统的core文件生成配置:

    ulimit -a | grep core
    

    您应该看到类似以下内容的输出:

    core file size          (blocks, -c) unlimited
    

    如果没有看到类似的输出,可能是由于其他配置文件限制了core文件生成。您可以尝试查找和编辑其他配置文件,如"/etc/security/limits.d/*"文件夹中的文件。

  5. 确保要生成core文件的程序在运行时未禁用core文件生成。您可以使用以下命令检查程序是否禁用了core文件生成:

    ulimit -c
    

    如果输出为"0",则表示core文件生成已禁用。您可以使用以下命令启用core文件生成:

    ulimit -c unlimited
    

    如果输出为"unlimited",则表示core文件生成已启用。

  6. 确保要生成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文件生成已启用。

  7. 确保要生成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
    

    保存文件并退出。

  8. 重新启动系统以使更改生效。

现在,当程序崩溃时,应该会在当前工作目录中生成一个core文件。您可以使用"gdb"来分析这个core文件并查找崩溃的原因:

gdb <program> <core-file>

请注意,生成core文件可能会消耗大量磁盘空间,因此建议在生成完core文件后及时删除它们

linux centos8不产生core怎么设置

原文地址: https://www.cveoy.top/t/topic/iEt9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录