You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调试程序执行后出现的段错误及查找Red Hat 7核心转储文件

程序退出阶段段错误排查及Red Hat 7核心转储文件位置

Red Hat 7核心转储文件的位置与生成检查

  • 默认情况下,核心转储文件core会生成在程序运行的当前工作目录。如果找不到,按以下步骤排查:
    1. 检查核心转储限制:执行ulimit -c,若输出为0说明系统禁用了核心转储。临时开启可执行ulimit -c unlimited(仅当前终端会话有效);永久开启需编辑/etc/security/limits.conf,添加行* soft core unlimited,之后重新登录系统。
    2. 查看自定义存储路径:执行sysctl kernel.core_pattern,若输出不是默认的core(比如/var/core/core.%e.%p.%t),则核心文件会生成在指定路径下(示例中为/var/core/)。修改路径可编辑/etc/sysctl.conf,添加或修改kernel.core_pattern = /your/custom/path/core,执行sysctl -p使配置生效。
    3. 验证目录权限:确保程序运行用户对目标存储目录有写权限,无权限将无法生成核心文件。

退出阶段段错误的排查方向

这种在程序输出"Successfully finished."后触发的段错误,几乎都是全局对象析构或atexit注册的回调函数中存在内存操作问题,比如重复释放内存、访问已释放的内存块、数组越界等。

排查步骤:

  • 若已获取核心转储文件,用gdb ./run_program core加载,执行bt命令打印调用栈,直接定位出错的函数和代码行。
  • 若暂时无法生成核心文件,直接用gdb ./run_program启动程序,输入run执行,触发段错误后立即执行bt查看调用栈。
  • 重点检查全局变量的析构逻辑、atexit注册函数中的内存释放代码,确认是否存在野指针、重复free等问题。

内容的提问来源于stack exchange,提问作者didjek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 06:22:21