
linux下core文件设置与查看
发布日期:2021-05-08 05:55:21
浏览次数:19
分类:精选文章
本文共 1191 字,大约阅读时间需要 3 分钟。
如何处理程序崩溃并生成core文件
在Linux系统中,当程序异常退出时,内核会生成core文件(core dump),这些文件包含程序的内存映像和调试信息,是调试崩溃程序的重要依据。本文将介绍如何查看和控制core文件的生成,以及如何通过gdb分析core文件。
一、查看系统中core文件生成的开关是否打开
使用ulimit命令查看core文件的生成开关
ulimit -c
若输出为0,说明core文件生成功能关闭,程序崩溃时不会生成core文件。
二、设置core文件生成
设置core文件大小限制
使用ulimit命令设置core文件的大小限制:
ulimit -c unlimited
若设置为指定大小:
ulimit -c 100M
生成的core文件大小将不超过指定值,超过部分将被裁剪,可能导致无法完全分析。
在用户环境中生效设置
为避免影响其他用户,建议在/root/.bash_profile
中设置:
ulimit -S -c unlimited
然后执行:
source /root/.bash_profile
这样仅对当前用户生效。
三、core文件的设置
core文件的命名规则
core文件的默认保存位置在程序所在目录下,文件名格式为core-<进程号>-<时间戳>
。可通过修改/proc/sys/kernel/core_pattern
来定制文件名格式:
echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
说明:
%e
:插入核心dump时运行的可执行文件名%p
:插入进程ID%u
:插入当前用户ID%g
:插入当前组ID%s
:插入导致coredump的信号%t
:插入coredump发生的Unix时间戳%h
:插入coredump发生时的主机名
core文件的保存位置
通过修改/proc/sys/kernel/core_pattern
可指定core文件的保存目录:
echo "/tmp/cores/core" > /proc/sys/kernel/core_pattern
四、core文件的查看
使用gdb分析core文件
安装gdb后,可通过以下命令查看core文件:
gdb -c core.xxxx
或者:
gdb file ./a.out core.xxxx
使用bt命令查看程序崩溃时的堆栈信息:
bt
或frame命令逐步分析堆栈:
frame
注意事项
- 在编译程序时,需加入
-g
选项以支持生成core文件。 - 对于多线程程序,core文件的分析可能较为复杂,需结合具体错误信息逐步排查。
- 常见错误包括内存越界、竞态条件等,需结合core文件中的信息和程序代码进行分析。
通过以上方法,可以有效地查看和控制core文件的生成,帮助快速定位程序崩溃的原因。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月25日 15时26分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
关于JTAG,你知道的和不知道的都在这里
2019-03-05
【CTF】CTFHub 技能树 文件头检查 writeup
2019-03-05
web服务器-并发服务器2
2019-03-05
【算法】解析位运算
2019-03-05
【Servlet】web.xml中welcome-file-list的作用
2019-03-05
【SqlServer】如何把本地SqlServer数据库部署到远程服务器上
2019-03-05
【ASP.NET】ASP.NET中权限验证使用OnAuthorization实现
2019-03-05
第9章 用户自己建立数据类型
2019-03-05
02、MySQL—数据库基本操作
2019-03-05
RedHat Linux-配置YUM仓库
2019-03-05
Redis数据类型
2019-03-05
1907: 树的路径覆盖
2019-03-05
1475: 方格取数
2019-03-05
1787: [Ahoi2008]Meet 紧急集合
2019-03-05
鸿蒙js开发10 从底部弹起的滚动选择器
2019-03-05
webpack实践(三)- html-webpack-plugin
2019-03-05
OpenJDK1.8.0 源码解析————HashMap的实现(一)
2019-03-05
MySQL-时区导致的时间前后端不一致
2019-03-05
2021-04-05阅读小笔记:局部性原理
2019-03-05