内核转储,开抓啦!

如果你还不清楚什么是转储文件,不知道什么时候需要转储文件,请参考转储文件系列文章的第一篇 —— 转储文件知多少

前言

前面几篇文章主要介绍了用户态转储文件(User-Mode Dump File)相关的内容。相信通过前面几篇文章的介绍,大家对用户态转储文件的抓取方法有了进一步的了解。接下来的几篇文章将介绍如何保存内核态转储文件(Kernel-Model Dump File)。

约定

关于 Kernel-Model Dump File 的叫法,直接翻译过来是 内核态转储文件 。有时候我会表述为 内核转储文件,或者更简单的 内核转储 。有时候也会表述为 系统转储文件,或者 系统转储 。当转储文件只包含内核信息时,称作 内核转储 是比较合适的。当转储文件中不仅包含内核信息,还包含用户态进程的信息时,称作 系统转储 是比较合适的。有时候界限划分的不是那么清晰,毕竟官方文档里只有 Kernal-Model Dump 。请各位小伙伴儿理解。

应用场景

用户态转储文件 是为用户态进程生成的转储文件,包含了用户态进程的信息。那么很容易理解,系统转储文件 就是为系统生成的转储文件,包含了操作系统的信息。我们在如下几种情况下可能需要系统转储。

  • 当系统莫名其妙蓝屏的时候,我们希望能自动保存一份转储文件,供我们分析。
  • 当需要调试的问题涉及到多个进程(比如,调试跨进程 COM 调用的问题)。这时候只生成单个进程的转储文件已经不能很好的帮助我们调试问题了,我们需要抓取系统转储文件。
  • 其它一些需要获取系统信息的情况。

几种生成方法

我们可以有很多种办法生成系统转储文件。我总结为如下三大类:

  1. 通过各种办法让系统崩溃,让系统帮我们生成转储文件。当然需要提前设置。
  2. 使用内核调试器。在本地内核调试(或 双机内核调试)的时候可以通过 .dump 命令直接生成转储文件,或者通过调试器的 .crash 命令让系统蓝屏。这种情况下,生成转储文件只是一个额外福利。
  3. 使用 livekd。当然,livekd 也会借助内核调试器的帮助,单独列出来是因为 livekd 实在是太强大了。

本文简要介绍一个可以让系统在蓝屏时自动保存转储文件的设置,后续会逐一介绍每种生成方法。

关键系统设置

  1. 打开 系统属性对话框高级 选项页。可以用下面的方法打开:

    • 我的电脑右键, 属性(R)(也可以直接执行 control.exe system,或者按快捷键 Windows + Pause),然后点击高级系统设置

    • 直接执行sysdm.cpl,然后点击 高级 选项页。

    • 其它方法。

  2. 点击 启动和故障恢复 下面的 设置(T)... 按钮。启动和故障恢复 对话框会弹出来。

  3. 写入调试信息 下面的组合框中选择 完全内存转储(根据自己的需要选择对应的选项)

  4. 依次点击 确定 按钮。

  5. 重启生效。

具体步骤可参考下图:
system-crash-dump-setting

BianChengNan wechat
扫描左侧二维码关注公众号,扫描右侧二维码加我个人微信:)
  • 本文作者: BianChengNan
  • 本文链接: https://bianchengnan.github.io/articles/kernel-mode-dump-begins/
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 作者寄语: 文章的结束只是思考的开始,您宝贵的意见和建议将是我继续前行的动力,点击右侧分享按钮即可携友同行!
0%