Linux修改Coredump文件位置及文件名

参考自gdb调试coredump(使用篇)_gdb解core查看所有进程-优快云博客

默认情况下,/proc/sys/kernel/core_pattern的值为core,即默认情况下当需要生成coredump时,会在二进制文件所在的目录下生成一个coredump文件,命名为core。

如果需要生成不同的coredump文件名(参考自The Core Pattern (core_pattern), or how to specify filename and path for core dumps | SIGQUIT),则可以

echo "core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern

这样运行后,可以生成类似core.dumpTest.11347.hihan.1710756208这样的文件名。

如果需要在统一的一个目录下保存coredump文件,则比如在/tmp/cores/目录下

mkdir -p /tmp/cores/
echo "/tmp/cores/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern

### 关于Linux CoreDump文件的生成、查看与分析 #### 一、CoreDump概述 当程序崩溃时,操作系统会自动生成一个名为CoreDump的核心转储文件。该文件包含了进程终止时刻内存映像以及有关寄存器状态的信息,对于开发者来说是非常重要的调试资源[^1]。 #### 二、CoreDump文件的生成方式 ##### ulimit命令控制Coredump大小限制 通过`ulimit -c unlimited`可以取消对核心转储文件大小的默认限制,从而允许生成完整的core dump文件。 ##### 使用sysctl调整内核参数 可以通过修改系统的内核参数来启用或禁用core dump功能。具体操作如下所示: ```bash sudo sysctl -w kernel.core_uses_pid=1 ``` 这行指令使得产生的core dump文件名后面附加有进程ID,有助于区分不同进程产生的core dump文件。 ##### 设置core_pattern定义输出路径及格式化名称 为了更灵活地管理core dump文件位置和命名规则,可通过编辑`/proc/sys/kernel/core_pattern`文件实现定制化的保存方案。例如下面这条命令将会把所有的core dumps都放到指定目录下,并按照日期时间和PID重命名为易于识别的形式: ```bash sudo sh -c "echo '/data/coredump/core_$(date +%Y-%m-%d_%H-%M-%S)-%p.dump' > /proc/sys/kernel/core_pattern" ``` #### 三、CoreDump文件的存储位置 通常情况下,默认会在当前工作目录中创建core dump文件;但如果指定了特定模式,则可以根据设定好的路径进行存放。比如上面提到的例子就是将所有core dump统一放置到了/data/coredump这个文件夹里[^2]。 #### 四、CoreDump文件的分析方法 ##### GDB调试工具的应用 一旦获得了core dump文件后,就可以利用GNU Debugger (GDB) 来加载并检查这些数据。启动gdb的方式很简单,在终端输入以下命令即可开始调查问题所在之处: ```bash gdb ./program_name path_to_core_file ``` 进入交互环境之后便能执行各种诊断动作,如打印栈回溯(`bt`)、变量值查询等,进而帮助找出导致异常的具体原因[^4]。 ##### Objdump反汇编工具辅助理解机器码 除了借助高级别的调试手段外,有时候还需要深入到更低层次去探究程序行为。这时objdump就派上了用场——它能够解析ELF目标文件中的信息,包括但不限于函数地址表、符号表等内容。这对于那些想要了解底层细节的人来说非常有用。 ```bash objdump -S program_name | less ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阅后即奋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值