使用 WinDbg 调试驱动程序 - 如何在 DriverEntry 设置断点?

Debugging a driver with WinDbg - How set a breakpoint at DriverEntry?

我有一个驱动程序,由于某些未知原因导致错误检查 0x0000003b。

所以我决定设置一个 Hyper-V VM 并使用内核调试来查看到底发生了什么。我已经使用 bcdedit 启用测试签名,并检查驱动程序确实已加载并且 运行 sc 查询 。问题是我希望 WinDbg 仅在调用有问题的驱动程序时介入,而不是在 windows 调试程序启动时介入,我该怎么做? 如何指示 windbg 在驱动程序的 DriverEntry 函数处暂停?

您可以使用命令 'bm DriverName!DriverEntry' 在 DriverEntry 添加断点。

除了现有的答案外,应该指出的是,如果您没有驱动程序的符号,您将无法使用 module!DriverEntry 符号在 [=12 上中断=].

您可以使用:

sxe ld module

(source)

加载 module 时中断。像往常一样,您可以省略 .sys 扩展名,只使用基本名称。

(Side-note: 这似乎不适用于 UM 模块,例如正在加载的 DLL。)