Debugging windbg的各种调试模式

Debugging windbg的各种调试模式,debugging,kernel,windbg,Debugging,Kernel,Windbg,我还想问一件事:我在某个地方读到windbg支持多种调试模式,其中一种模式是某种内核调试,系统正常运行,不等待windbg断点等。这是本地内核调试模式吗?还有,如果有人能非常简短地澄清和之间的区别。我没有从MSDN上看到它。谢谢您调试类型 你可以分辨好几次 a) 在内核调试和用户模式调试之间(应用程序调试) b) 在实时调试(运行系统)和事后调试(崩溃转储分析)之间 c) 在本地调试和远程调试之间 所以总共有8种调试组合 对于本地实时内核调试,您需要将Windows内核置于调试模式。如果您不想这

我还想问一件事:我在某个地方读到windbg支持多种调试模式,其中一种模式是某种内核调试,系统正常运行,不等待windbg断点等。这是本地内核调试模式吗?还有,如果有人能非常简短地澄清和之间的区别。我没有从MSDN上看到它。谢谢您

调试类型 你可以分辨好几次

a) 在内核调试和用户模式调试之间(应用程序调试)

b) 在实时调试(运行系统)和事后调试(崩溃转储分析)之间

c) 在本地调试和远程调试之间

所以总共有8种调试组合

对于本地实时内核调试,您需要将Windows内核置于调试模式。如果您不想这样做,您可以使用进行“伪”实时本地内核调试

无创调试 非侵入性调试是用户模式调试的一个子集,您已经链接到的文章(WinDbg帮助的副本)对此进行了最好的描述,其中指出:

使用非侵入式调试,您没有那么多的调试操作。但是,您可以最小化调试器对目标应用程序的干扰。如果目标应用程序已停止响应,则非侵入性调试非常有用

在非侵入性调试中,调试器实际上不会附加到目标应用程序。调试器挂起目标的所有线程,并可以访问目标的内存、寄存器和其他此类信息。但是,调试器无法控制目标

睡眠模式
休眠模式是指WinDbg正在运行但尚未连接到任何目标。例如,如果您在没有任何命令行选项的情况下刚刚启动WinDbg,并且尚未按F6键连接到进程。

谢谢。提到的系统正常运行且不等待windbg断点等的内核调试是本地内核调试(例如使用LiveKd)?这让我想起了您描述的那种非侵入性调试。当您已经连接了另一个调试器(如Visual Studio)但希望使用Windbg检查内存时,非侵入性调试也很有用。这是错误的。从Windows XP开始,支持本地实时内核调试。这是<另一方面,code>LiveKd不允许您执行实时本地内核调试。它拍摄内存快照,并在崩溃转储分析模式下运行WinDbg。如果打开WinDbg run by
LiveKd
,可以看到传递给它的
-z foo.dmp
参数
-z
是最新版本。您需要为此启用内核调试(
bcdedit/debug on
或在XP上的
boot.ini
文件中添加
/debug
),才能像通过WinDbg进行实时内核调试一样工作
LiveKd
有时的确是一个不错的选择;我不是在说别的。我已经用过不止一次了。但它会给您一个静态转储文件,不允许您将数据写入内存等(您很可能无论如何都不应该尝试,但通过“真正的”本地内核调试,您可以这样做,尽管这可能很危险)。是的,编辑使答案更加准确。不,谢谢。一旦我能同意这个答案,我就投赞成票