当前位置: 首页 > news >正文

如何配置core dump生成

文章目录

      • **一、临时配置(当前会话有效)**
        • 1. **设置core文件大小限制**
        • 2. **设置core文件命名格式(可选)**
      • **二、永久配置(所有会话生效)**
        • 1. **修改系统限制配置**
        • 2. **修改内核参数**
      • **三、高级配置选项**
        • 1. **使用core dump过滤(内核5.12+)**
        • 2. **启用systemd-coredump服务**
      • **四、验证配置是否生效**
      • **五、注意事项**

在Linux系统中配置core dump生成主要涉及调整系统限制和设置文件路径。以下是详细步骤:

一、临时配置(当前会话有效)

1. 设置core文件大小限制

使用ulimit命令调整当前shell会话的core文件大小限制:

# 查看当前限制(0表示禁用)
ulimit -c# 允许生成core文件,不限制大小
ulimit -c unlimited# 或设置具体大小(单位:块,通常为512字节)
ulimit -c 10240  # 允许生成最大5MB的core文件
2. 设置core文件命名格式(可选)

通过修改/proc/sys/kernel/core_pattern指定core文件的生成路径和命名规则:

# 示例1:在当前目录生成core文件,包含PID
echo "core.%p" | sudo tee /proc/sys/kernel/core_pattern# 示例2:统一存放到/tmp目录,格式为core.时间戳.PID
echo "/tmp/core.%t.%p" | sudo tee /proc/sys/kernel/core_pattern

支持的占位符:

  • %p:进程ID
  • %t:时间戳(秒)
  • %e:程序名
  • %h:主机名

二、永久配置(所有会话生效)

1. 修改系统限制配置

编辑/etc/security/limits.conf文件,添加以下内容:

# 为所有用户设置core文件大小无限制
*       hard    core    unlimited
*       soft    core    unlimited# 或为特定用户(如testuser)设置
testuser hard    core    unlimited
testuser soft    core    unlimited
2. 修改内核参数

编辑/etc/sysctl.conf文件,添加或修改:

kernel.core_pattern = /tmp/core.%e.%p.%t

使配置生效:

sudo sysctl -p

三、高级配置选项

1. 使用core dump过滤(内核5.12+)

通过/proc/sys/kernel/core_mask控制core文件包含的内存区域:

# 示例:仅包含代码段、数据段和栈
echo 0x33 | sudo tee /proc/sys/kernel/core_mask
2. 启用systemd-coredump服务

现代Linux系统推荐使用systemd-coredump管理core文件(需要手动安装, sudo apt install systemd-coredump):

# 启用服务
sudo systemctl enable coredump.service
sudo systemctl restart coredump.service# 查看已收集的core文件
coredumpctl list# 用gdb分析特定core文件
coredumpctl gdb <PID>

四、验证配置是否生效

  1. 触发一个段错误测试:

    echo 'int main() { *(int*)0 = 0; }' > crash.c
    gcc -o crash crash.c
    ./crash  # 应该生成core文件
    
  2. 检查生成的core文件:

    ls -l core*  # 或查看/tmp目录
    

五、注意事项

  1. 磁盘空间:core文件可能非常大,建议配置到空间充足的分区。
  2. 安全风险:core文件可能包含敏感数据(如密码、密钥),需限制访问权限。
  3. 容器环境:Docker/Kubernetes默认禁用core dump,需通过--privilegedsecurityContext单独配置。

通过以上配置,系统将在进程崩溃时生成包含关键调试信息的core文件,帮助开发者快速定位问题。

http://www.dtcms.com/a/266096.html

相关文章:

  • Android App冷启动流程详解
  • webrtc-streamer视频流播放(rstp协议h264笔记)
  • 新人如何入门学习 STM32?
  • Stata如何做机器学习?——SHAP解释框架下的足球运动员价值驱动因素识别:基于H2O集成学习模型
  • Selenium 自动化测试中跳过机器人验证的完整指南:能用
  • 1688 Agent Russia 丨俄罗斯淘宝代购1688代采集运系统搭建指南介绍
  • 8分钟讲完 Tomcat架构及工作原理
  • Vue如何处理数据、v-HTML的使用及总结
  • 使用Python Watchdog库实现文件系统监控
  • Linux基本命令篇 —— tar命令
  • 修改阿里云vps为自定义用户登录
  • 使用Feapder中的Dedup过滤数据
  • 【python】json.loads()函数处理字符串时不需要指定编码
  • Windows系统编程(Win32 API)
  • pytorch、torchvision与python版本对应关系
  • 什么是软中断
  • 使用Visual Studio 2022创建CUDA编程项目
  • Python爬虫 XPath 三方库lxml
  • Unity Android与iOS自动重启
  • Java综合练习04
  • js代码中的作用域
  • 深度学习×第4卷:Pytorch实战——她第一次用张量去拟合你的轨迹
  • Mausezahn - 网络流量生成与测试工具(支持从链路层到应用层的协议模拟)
  • C++ 解决类相互引用导致的编译错误
  • 状态码301和302的区别
  • 智能设备远程管理:基于OpenAI风格API的自动化实践
  • 渗透靶机 Doctor 复盘
  • 粘包问题介绍
  • JS模块导出导入笔记 —— 默认导出 具名导出
  • 【嵌入式电机控制#8】编码器测速实战