【问题标题】:Various debug modes of windbgwindbg的各种调试模式
【发布时间】:2015-07-15 19:09:15
【问题描述】:

我还想问一件事:在某处我读到 windbg 支持多种调试模式,其中一种模式是某种内核调试,其中系统正常运行并且不等待 windbg 断点等。是这种本地内核调试模式?另外,如果有人可以非常简要地澄清Non invasive debuggingDormant mode 之间的区别。我没有从 MSDN 中得到它。谢谢

【问题讨论】:

    标签: debugging kernel windbg


    【解决方案1】:

    调试类型

    你可以分几次

    a) 内核调试和用户态调试(应用程序调试)之间

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

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

    所以总共有8种调试组合。

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

    无创调试

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

    使用非侵入式调试,您没有那么多调试操作。但是,您可以最大限度地减少调试器对目标应用程序的干扰。如果目标应用程序停止响应,无创调试很有用。

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

    休眠模式

    休眠模式是 WinDbg 正在运行但未附加到任何目标时。例如。如果您只是在没有任何命令行选项的情况下启动 WinDbg 并且尚未按下 F6 以附加到进程。

    【讨论】:

    • 谢谢托马斯。提到的系统正常运行且不等待windbg断点等的内核调试是本地内核调试(例如使用LiveKd)?这让我想起了你描述的那种非侵入式调试。
    • 当您已经连接了另一个调试器(例如 Visual Studio)但您想使用 Windbg 检查内存时,非侵入式也很有用。
    • 这是双重错误。从 Windows XP 开始支持本地实时内核调试。这是documented in the WinDbg help。另一方面,LiveKd 不允许 允许您执行实时本地内核调试。它拍摄内存快照并在故障转储分析模式下运行 WinDbg。如果您打开由LiveKd 运行的WinDbg,您可以看到传递给它的-z foo.dmp 参数。 -zflag for loading a dump file
    • 您需要为此打开内核调试(bcdedit /debug on 或在 XP 上的 boot.ini 文件中添加 /debug)才能正常工作,就像通过 WinDbg 进行实时内核调试一样. LiveKd 有时确实是一个不错的选择;我不是说别的。我用过不止一次。但它为您提供了一个静态转储文件,并且不允许您将数据 写入 到内存等中(您很可能不应该尝试,但是通过“真正的”本地内核调试您 可以,尽管可能很危险)。是的,编辑使答案更加准确。
    • 不用谢谢。一旦我同意答案,我就投赞成票。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-02-03
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多