作家
登录

使用Kdump检查Linux内核崩溃

作者: 来源: 2017-08-02 15:55:14 阅读 我要评论

--- 
  • LOAD off 0x0000000000020000 vaddr 0xffff000008080000 paddr 0x0000004000280000 align 2**0 filesz 
  • 0x0000000001460000 memsz 0x0000000001460000 flags rwx 
  • LOAD off 0x0000000001480000 vaddr 0xffff800000200000 paddr 0x0000004000200000 align 2**0 filesz 
  • 0x000000007fc00000 memsz 0x000000007fc00000 flags rwx 
  • LOAD off 0x0000000081080000 vaddr 0xffff8000ffe00000 paddr 0x00000040ffe00000 align 2**0 filesz 
  • 0x00000002fa7a0000 memsz 0x00000002fa7a0000 flags rwx 
  • LOAD off 0x000000037b820000 vaddr 0xffff8003fa9e0000 paddr 0x00000043fa9e0000 align 2**0 filesz 
  • 0x0000000004fc0000 memsz 0x0000000004fc0000 flags rwx 
  • LOAD off 0x00000003807e0000 vaddr 0xffff8003ff9b0000 paddr 0x00000043ff9b0000 align 2**0 filesz 
  • 0x0000000000010000 memsz 0x0000000000010000 flags rwx 
  • LOAD off 0x00000003807f0000 vaddr 0xffff8003ff9f0000 paddr 0x00000043ff9f0000 align 2**0 filesz 
  • 0x0000000000610000 memsz 0x0000000000610000 flags rwx 
  • 在这个例子中,有一个 note 段,其余的是 load 段。note 段供给了有关 CPU 信息,load 段供给了关于复制的体系内存组件的信息。

    vmcore 大年夜 elfcorehdr 开端,它具有与 ELF 法度榜样头雷同的构造。拜见下图中 elfcorehdr 的表示:

    pratyush_f2.png

    kexec-tools 攫取 /sys/devices/system/cpu/cpu%d/crash_notes 并预备 CPU PT_NOTE 的标头。同样,它攫取 /sys/kernel/vmcoreinfo 并预备 vmcoreinfo PT_NOTE 的标头,大年夜 /proc/iomem 攫取体系内存并预备存储器 PT_LOAD 标头。当“捕获内核”接收到 elfcorehdr 时,它大年夜标头中提到的地址中攫取数据,并预备 vmcore。

    Crash note

    Crash notes 是每个 CPU 顶用于在体系崩溃的情况下存储 CPU 状况的区域;它有关于当前 PID 和 CPU 存放器的信息。

    vmcoreinfo

    makedumpfile

    【编辑推荐】

    1. 在Linux办事器中设备mongodb情况
    2. 玩转Linux,哪些技能会是您的必备之选?
    3. Linux内核驱动中对文件的读写
    4. 在Linux Mint安装Linux Kernel 4.12(稳定版)
    5. LKU:一套在Ubuntu/LinuxMint上编译、安装和更新最新内核的Shell脚本
    【义务编辑:枯木 TEL:(010)68476606】

    该 note 段具有各类内核调试信息,如构造体大年夜小、符号值、页面大年夜小等。这些值由捕获内核解析并嵌入到 /proc/vmcore 中。 vmcoreinfo 重要由 makedumpfile 应用法度榜样应用。在 Linux 内核,include/linux/kexec.h 宏定义了一个新的 vmcoreinfo。 一些示例宏如下所示:

    • VMCOREINFO_PAGESIZE()
    • VMCOREINFO_SYMBOL()
    • VMCOREINFO_SIZE()
    • VMCOREINFO_STRUCT_SIZE()

    vmcore 中典范多信息(如可用页面)都没有效处。makedumpfile 是一个用于清除不须要的页面的应用法度榜样,如:

    • 填满零的页面;
    • 没有私有标记的缓存页面(非专用缓存);
    • 具有私有标记的缓存页面(专用缓存);
    • 用户过程数据页;
    • 可用页面。

    此外,makedumpfile 在复制时紧缩 /proc/vmcore 的数据。它也可以大年夜转储中删除敏感的符号信息; 然而,为了做到这一点,它起首须要内核的调试信息。该调试信息来自 VMLINUX 或 vmcoreinfo,其输出可所以 ELF 格局或 kdump 紧缩格局。

    典范用法:

    1. # makedumpfile -l --message-level 1 -d 31 /proc/vmcore makedumpfilecore 

    kdump 调试

    新手在应用 kdump 时可能会碰到的问题:

    在“第一内核”的最后一个消息之后,在控制台上看不到任何器械(比如“bye”)

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)