kdump是在系统崩溃的时候用来转储内存运行参数的一个工具和服务,打个比方,如果系统一旦崩溃那么正常的内核就没有办法工作了,在这个时候将由kdump产生一个用于capture当前运行信息的内核,该内核会将此时的内存中的所有运行状态和数据信息收集到一个dump core文件中以便于工程师分析崩溃原因,一旦内存信息收集完成,系统将自动重启。

  1. 软件安装

sudo apt-get install linux-crashdump

安装之后需要重启,通过 /etc/init.d/kdump-tools status 查看kdump状态,active时表示kdump处于启动状态。

  1. 产生异常,生成dump文件,通过写的一个module(hello.ko)来实现的,该module在init时候做如下操作:

char *p = kmalloc(1, GFP_KERNEL);

while(1) {

*p = 0;

p++;

}

  1. 生成的dump文件默认在 /var/crash 下,存储目录可以通过 /etc/default/dump-tools 配置。通过上边的module(hello.ko)生成了多次dump文件,具体内容见压缩文件(crash.zip)。
  1. 文件分析需要下载安装相应版本的 dbgsym,从

http://ddebs.ubuntu.com/pool/main/l/linux/

下载,通过 ‘sudo dpkg –I XXX.deb’安装,安装之后会在 /usr/lib/debug/boot/ 下生成一个vmlinux文件

  1. 通过 crash 分析dump 文件命令如下

sudo crash /usr/lib/debug/boot/vmlinux dump.xxxx

操作之后会进入一个 crash 界面,help 输出可以调试命令,crash 以 gdb 为核,可以参考gdb命令。

另一个 .crash 文件需要通过apport软件来解压一下,命令为:

sudo apport-unpack /var/crash/linux-image ~/tmp

解压获取到的文件可以直接通过文本编辑器查看。

kdump 调试手段的更多相关文章

  1. 在Linux-PC上建立kdump调试环境

    kdump就是kernel dump的简称,它是从DDR中直接获取的linux内核数据(系统代码/数据).分析kdump是定位内核panic问题的有效手段之一,同时,通过kdump研究内核数据结构,也 ...

  2. 解析使用ThinkPHP应该掌握的调试手段

    解析使用ThinkPHP应该掌握的调试手段     使用ThinkPHP应该掌握的调试手段经常看到有人问到findAll的返回数据类型是什么之类的问题,以及出错了不知道什么原因的情况,其实还是没有熟悉 ...

  3. PCI 设备调试手段

    Author: Younix Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.04 一PCI 设备调试手段 busybox ls ...

  4. thinkphp调试手段

    使用ThinkPHP应该掌握的调试手段经常看到有人问到findAll的返回数据类型是什么之类的问题,以及出错了不知道什么原因的情况,其实还是没有熟悉ThinkPHP内置的调试手段和方法,抛开IDE本身 ...

  5. shell 调试手段总结

    对于厌烦了的 print 和 echo,可以尝试点新鲜省力的小手段. 1. 使用 shell 的执行选项 sh 和 bash 常用的执行指令有:-n.-x.-c.-v. 其中: -n 是 noexec ...

  6. Android 中调试手段 打印函数调用栈信息

    下面来简单介绍下 android 中的一种调试方法. 在 android 的 app 开发与调试中,经常需要用到打 Log 的方式来查看函数调用点. 这里介绍一种方法来打印当前栈中的函数调用关系 St ...

  7. 程序调试手段之gdb, vxworks shell

    调试一个程序主要用到的功能: 启动程序 设置函数断点 设置数据断点 单步执行 查看内存值 修改内存值 linux下的gdb,和vxworks下的shell 虽然使用方式和调试命令略有不同,但是都能满足 ...

  8. tensorflow tfdbg 调试手段

    https://blog.csdn.net/gubenpeiyuan/article/details/82710163 TensorFlow 调试程序 tfdbg 是 TensorFlow 的专用调试 ...

  9. 【Python3爬虫】突破反爬之应对前端反调试手段

    一.前言 在我们爬取某些网站的时候,会想要打开 DevTools 查看元素或者抓包分析,但按下 F12 的时候,却出现了下面这一幕:   此时网页暂停加载,自动跳转到 Source 页面并打开了一个 ...

随机推荐

  1. Linux下开启计划任务日志

    crontab记录日志 修改rsyslog vim /etc/rsyslog.d/50-default.conf (我的是root用户) 搜索cron 把如下行之前的注释"#"去掉 ...

  2. vim字符串替换及小技巧

    vi/vim 中可以使用 :s 命令来替换字符串.以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询. :s/vivian/s ...

  3. CentOS 6.5下Redis安装测试

    NoSQL之Redis - CentOS 6.5安装测试 1.下载redis 可以在线安装或者下载 redis ①在线安装前需要检测是否存在rpm包不存在的话查看yum在线是否存在rpm包不存在的话就 ...

  4. Linq to sql 之 ExecuteQuery 错误:指定的转换无效

    问题:通过dbContext.ExecuteQuery 得到数据并赋值给一个集合. 代码: public IEnumerable<LeaveCodeSum> GetLeavTotal(st ...

  5. Windows消息循环

    首先理解一句话:“Windows”向应用程序发送了一条消息.这里是指Windows调用了该程序内部的一个函数. 当UpdateWindow被调用后,新建的窗口在屏幕便完全可见了.此时,Windows会 ...

  6. 链表中倒数第k个结点(python)

    题目描述 输入一个链表,输出该链表中倒数第k个结点 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.v ...

  7. 198. House Robber(Array; DP)

    You are a professional robber planning to rob houses along a street. Each house has a certain amount ...

  8. Mac电脑Dock栏开启放大特效

    1 右击Dock栏空白处,选择启用放大 2 在Dock偏好设置中调整图标放大的倍数 3 滑动鼠标,查看放大效果

  9. TZOJ 2546 Electricity(去掉割点后形成的最大连通图数)

    描述 Blackouts and Dark Nights (also known as ACM++) is a company that provides electricity. The compa ...

  10. f5单台安装配置

    1.对设备的管理口进行配置 管理口的默认设置 •IP 地址: 192.168.1.245/24 2.用户名和密码 1)初始密码: 图形界面用户名/密码:admin/admin:命令行用户名/密码:ro ...