Debugging 如何闯入KD(Windbg)进行浏览器崩溃

Debugging 如何闯入KD(Windbg)进行浏览器崩溃,debugging,crash,kernel,windbg,usermode,Debugging,Crash,Kernel,Windbg,Usermode,我在Explorer.exe中看到一个崩溃,因为我们的安全软件dll加载到Explorer.exe中 崩溃发生在系统关闭期间。VM连接到内核调试器。我没有看到内核调试器在异常发生时中断。我尝试了所有调试事件过滤器。但我不能成功 有人能给我提个建议吗,为什么在出现异常时我看不到中断。 我想在异常发生时进入调试器。 我可以在内核模式中使用SXE ud“dllName”来通知我何时卸载perticula dll吗 例外是 浏览器崩溃,“0x6ad88b5处的指令引用了0x0000000处的内存。无法读

我在Explorer.exe中看到一个崩溃,因为我们的安全软件dll加载到Explorer.exe中

崩溃发生在系统关闭期间。VM连接到内核调试器。我没有看到内核调试器在异常发生时中断。我尝试了所有调试事件过滤器。但我不能成功

有人能给我提个建议吗,为什么在出现异常时我看不到中断。 我想在异常发生时进入调试器。 我可以在内核模式中使用SXE ud“dllName”来通知我何时卸载perticula dll吗

例外是
浏览器崩溃,“0x6ad88b5处的指令引用了0x0000000处的内存。无法读取内存”

首先,在内核模式下调试时,加载或卸载DLL不会导致中断,但在用户模式下调试时,它们工作正常

我相信在内核模式调试中,当加载或卸载内核模式二进制文件(如.SYS文件)时,您应该能够中断调试

现在,回答你的问题。一种可能是

  • 将Windbg设置为默认的后期调试程序<代码>windbg.exe-I。 这将确保在发生任何异常时中断调试器。但这将是用户模式调试

  • 接下来,假设您有一个KD设置,只要执行
    .breakin
    ,您就可以从用户模式调试到内核模式调试

  • 斜体是调试器命令。

    这应该可以:

  • 从WinDbg启动gflags.exe
  • 转到“图像文件”选项卡,键入“explorer.exe”并按tab键
  • 选中第一项“”

  • 现在,当explorer.exe崩溃并连接内核调试器时,WinDbg应该会中断。

    感谢您的回复。但是当我发出shutdown命令时,浏览器崩溃就发生了,此时所有进程都终止了。这可能就是原因,即使使用Gflags或“Windbg-I”,我也无法捕获异常。不幸的是,当我设置后期调试程序“Windbg-I”时,异常从未发生。它运行起来没有问题(Windbg-I,不应真正改变explorer.exe工作中的任何内容。如果未发生异常,则表明您存在计时问题。我建议多次执行复制场景。这可能会帮助您获得崩溃。或者正如@Peter建议的那样,在gflags下运行它,您将提前捕获与内存相关的问题。如果仍然没有重新编程,看起来bug已经消失了,很高兴:)非常感谢它的时间问题。我们正在使用peek消息(&Msg,0,0,PM_-REMOVE);如果我使用PM_NOREMOVE,它可以正常工作。