【问题标题】:How to generate kernel dump by using Windbg?如何使用 Windbg 生成内核转储?
【发布时间】:2015-08-16 14:29:30
【问题描述】:

如何使用 WinDBG 生成内核转储?

如果我使用该命令,它可以生成内核转储吗?

.dump /f

或者我必须使用.crash 来获取内核转储?

【问题讨论】:

  • 如果您正在调试内核,是的,.dump 可以将转储文件写入磁盘而无需进行错误检查。关于主题here 有更多详细信息。此外,如果您不需要实时调试会话,您可以随时使用livekd-o 开关将转储写入磁盘。

标签: kernel windbg crash-dumps


【解决方案1】:

是的,.dump /f 在您处于内核调试模式时会生成内核转储。在用户模式下调试时,它不会创建内核转储。

.crash 但是,会导致系统崩溃,即导致 BSOD(蓝屏死机),这不能保证生成内核转储,尤其是不能保证全内存内核转储。 .crash工作有一定的条件:

  1. 必须配置 BSOD 故障转储,尤其是在您需要完整 RAM 时
  2. 系统必须有页面文件
  3. 页面文件必须足够大以保持所有 RAM + 一些开销
  4. 页面文件必须在系统分区中
  5. 必须有足够的可用磁盘空间才能在下次启动时将转储从页面文件复制到磁盘

SysInternals NotMyFault/crash可以达到类似的效果,但在相同的条件下会受到影响。

所以,更可靠的方法是.dump

正如 Sean Cline 之前提到的,您可以使用 SysInternals LiveKD-o 或者 -m 开关来生成内核转储。

也有other options,但我自己从未成功应用它们,例如我从来没有设法通过 Ctrl+Scroll+Scroll 进行内核转储。

【讨论】:

  • .dump 还具有在启动周期的早期工作的优势。必须实际创建页面文件以使 .crash 工作,直到用户模式组件启动时才会发生这种情况。唯一的缺点是 .dump 可能非常缓慢。最好通过 1394b 连接进行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多