按需从用户 space 获取内核转储,无需内核调试 (Windows)
Take kernel dump on-demand from user-space without kernel debugging (Windows)
生成具有句柄信息的内核转储的最简单、最便携的方法是什么(在只需要将几个文件复制到目标机器的意义上,就像 procdump
一样)?
procdump
具有 -mk
选项,它生成与指定进程有关的有限转储文件。在 WinDbg 中报告为:
Mini Kernel Dump File: Only registers and stack trace are available
。我尝试的大多数命令(!handle
、!process 0 0
)都无法读取数据。
官方看来,windbg
和 kd
会生成转储(这需要内核调试)。
我发现一个奇怪的解决方案是使用 livekd
和 -ml
:Generate live dump using native support (Windows 8.1 and above only).
。 livekd
仍然寻找 kd.exe
,但不使用它 :) 所以我可以用一个空文件来欺骗它,并且不需要内核调试。知道它是如何工作的吗?
LiveKD 使用未记录的 NtSystemDebugControl API 来捕获内存转储。虽然您可以轻松地在网上找到有关 API 的信息,但最简单的方法就是使用 LiveKD。
生成具有句柄信息的内核转储的最简单、最便携的方法是什么(在只需要将几个文件复制到目标机器的意义上,就像 procdump
一样)?
procdump
具有 -mk
选项,它生成与指定进程有关的有限转储文件。在 WinDbg 中报告为:
Mini Kernel Dump File: Only registers and stack trace are available
。我尝试的大多数命令(!handle
、!process 0 0
)都无法读取数据。
官方看来,windbg
和 kd
会生成转储(这需要内核调试)。
我发现一个奇怪的解决方案是使用 livekd
和 -ml
:Generate live dump using native support (Windows 8.1 and above only).
。 livekd
仍然寻找 kd.exe
,但不使用它 :) 所以我可以用一个空文件来欺骗它,并且不需要内核调试。知道它是如何工作的吗?
LiveKD 使用未记录的 NtSystemDebugControl API 来捕获内存转储。虽然您可以轻松地在网上找到有关 API 的信息,但最简单的方法就是使用 LiveKD。