core dump 崩溃分析
- linux core dump
- 分析无调试符号 core dump 文件
linux core dump
一般称为核心转储、内核转储,统称为转储文件。
代表某个时刻、某个进程的内存信息映射。包含了生成转储文件时该进程的整个内存信息以及寄存器信息。
转储文件可以是某个进程的,也可以是整个系统的。
可以在进程运行中生成,也可以在进程或者系统崩溃时自动生成。
为运行中的进程创建 core dump
文件一般通过 gdb
生成,使用 gdb
把进程 attach
进来之后,执行 generate-core-file
或者 gcore
命令来生成 core dump
文件。
(程序运行异常,但是没有崩溃,可以通过为运行中的进程创建 core dump
分析异常原因。)
运行中的程序生成 core dump
文件:
ps -aux | grep process //获取正在运行中的 process进程的进程id。
gdb attach 29843
gcore test.core //运行中的程序生成 test.core文件。
更多的情况是对程序崩溃时产生的 core dump
文件进行分析。
如何让程序崩溃时自动产生 core dump 文件?
如果系统中 ulimit -c
命令显示为0,表示当前不会自动生成 core dump
文件。
需要对于 ulimit -c
进行设置:
①:设置为无限值:ulimit -c unlimited
。
core 文件名由 /proc/sys/kernel/core_pattern
文件控制。
[root@VM-16-8-centos remote-section]# cat /proc/sys/kernel/core_pattern
core
默认配置为 core
文件。
存在的缺陷:只有 core 文件名,如果程序在不同的地方崩溃,新生成的 core 文件将会覆盖旧的 core 文件。
修改方式之一:加上进程名、pid、时间戳。
echo -e "%e-%p-%t" > /proc/sys/kernel/core_pattern
使用 gdb
分析 core dump
文件:
加载core文件:
gdb ./[可执行文件] [core dump 文件]
程序收到 SIGSEGV
信号终止表示出现了段错误 Segmentation fault
。
段错误:非法访问内存。
定位到崩溃的位置:查看堆栈
bt
f [数字]
根据崩溃帧的位置切换到数字对应的帧。
切换到 2 号帧。
f 2
进入崩溃所在帧之后可以通过查看局部变量信息和源代码进行原因分析。
分析方向:
①:内存是否分配不够。(很少遇到)
②:是否出现栈溢出。(栈溢出非常难定位)
…………
分析无调试符号 core dump 文件
已经发布的正式版软件,为了运行效率或节省空间等都会去掉调试信息,调试起来相对复杂。
没有调试符号就无法查看参数,局部变量等信息。
使用 bt
命令 或者 where
命令定位到程序崩溃时调用栈的位置。
在 gdb 中使用 !head main.cpp -n 15
命令查看 main.cpp文件的前 15行代码。
core dump 崩溃分析相关推荐
- Core Dump流程分析
闲话 最近分析问题时,发现我的环境中,经常有用户态进程异常退出,但是却没有core文件生成,简单看了一下相关的内核流程,mark一下. Core Dump基本原理 当应用程序在用户态发生异常时,比如常 ...
- 容器进程Core Dump处理
本文主要介绍了Core Dump实现容器进程的方法和相关内容. 上篇文章回顾:IPv6入门教程 引子 在我们调试程序时经常会使用到Core Dump(https://en.wikipedia.org/ ...
- JDK core dump分析
Java项目一般使用jstack, jmap等Java工具都可以分析进程bug,但是有时候jvm自身异常退出,此时往往没有hprof文件,而是生成了core文件,特别是在使用JNI技术的项目中,这时候 ...
- gcore 获取程序core dump file 但程序不用退出,gdb 分析core
转载地址: http://hi.baidu.com/widebright/item/e94ea43535711f4a3075a1d0 本文包含如下部分内容 1. Linux内核里面生成的core fi ...
- Core Dump 核心转储-进程异常分析jmap命令
Core Dump 核心转储 一.简介 程序运行过程中异常退出定位,查看到程序异常时的所有信息,变量值.栈信息.内存数据,程序异常时的运行位置(甚至记录代码行号)等等 jdk/bin目录下 ./jma ...
- core dump 分析
环境变量设置 可以通过 /etc/security/limits 文件对各用户的基本配置参数包括 core 大小进行限制.或者通过 ulimit 更改当前环境下的 core 大小限制. 默认情况下,应 ...
- oracle dump 源码,AIX 下的 core dump 分析入门
AIX 下的 core dump 分析入门 (), 工程师, IBM 作者毕业于中国科学技术大学,目前任职于 IBM,主要方向为 AIX 平台移植.性能优化.问题定位等. 简介: 本文简要介绍了 AI ...
- Linux上Core Dump文件的形成和分析
Core,又称之为Core Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而言,Core令人闻之色变,因为出Core的过程意味着服务暂时不能正常响应,需要恢复,并且随着吐Core ...
- java core 作者_java core dump分析实战
hs_err_pid简介 hs_err_pid.log是java程序发生core的时候产生的文件,里面有当时出错时jvm的执行情况. 排查方法 头文件解读可以查看问题 头文件包含了简单的信息阐述,里面 ...
最新文章
- 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第8章-Lurie 型动态网络自适应牵制控制
- java 面试题三十三 子类父类方法执行顺序的问题
- 如何使用 React 和 React Hooks 创建一个天气应用
- 超简单炫彩抽象线条感海报PSD分层素材,一切变得简单!
- php $_SERVER详细参数解析
- KeyTool生成证书链及使用
- latex 如何添加圆圈数字?
- Ruby完全自学手册
- xshell5字体大小调整
- nii、npz、npy、dcm、mhd 的数据互转处理,及多目标分割处理汇总
- 【读书笔记】心理学与生活
- 《算法竞赛进阶指南》0x62 T4 黑暗城堡
- java中print的含义_【转】Java中print、printf、println的区别详解
- springboot2.0启动报错The APR based Apache Tomcat Native library which allows optimal performance in ...
- 【图像处理】SFR算法详解1
- WorkFlow一:WorkFlow基础配置
- CCF计算机软件能力认证试题练习:201612-2 工资计算
- 使用C++访问Google API
- 怎么使用计算机计算二进制数,计算机上的二进制是怎么算的
- [CS131] Lecture 1 Course Introduction课程介绍