3

作为驱动程序开发人员,WinDbg 是我最好的朋友之一。

现在从 Windows 8 开始,我安装了新的 WDK 并想使用它的新 WinDbg。它具有一些不错的功能,例如通过网络进行远程调试。

但是在使用过程中,当我意识到我只能激活 32 个断点时,我感到震惊。显示以下消息:

*******************************************************************************
* You have attempted to enable   33 KD breakpoints, which exceeds the         *
* currently supported limit of   32 breakpoints for Windows kernel debugging. *
* Breakpoints exceeding this limit are ignored.                               *
* Please disable/clear breakpoints until you are within the supported limit.  *
*******************************************************************************

在早期版本中并非如此。有没有解决的办法?一个我还没有找到的选项,一个注册表项,或者我可以修补可执行文件?

4

2 回答 2

1

有趣的。警告消息来自 dbgeng!AddBreakpoint,在单步执行代码时,看起来 32 的限制是硬编码的:

cmp     esi, 20h
jbe     short loc_100A5721
push    offset asc_10038758 ; "***************************************"...
call    ?WarnOut@@YAXPBGZZ
pop     ecx
push    esi
push    offset aYouHaveAttempt ; "* You have attempted to enable %4u KD b"...
call    ?WarnOut@@YAXPBGZZ
push    20h
push    offset aCurrentlySuppo ; "* currently supported limit of %4u brea"...
call    ?WarnOut@@YAXPBGZZ
push    offset aBreakpointsExc ; "* Breakpoints exceeding this limit are "...
call    ?WarnOut@@YAXPBGZZ

我怀疑仅仅修补这个检查是不够的,但我没有进一步确认这一点。

于 2012-09-18T18:06:52.647 回答
0

您可以通过以下命令将 int 3(字节 0xCC)放置在任何地址:eb [address] cc

确保在点击 int 3 时恢复原始字节。

于 2012-09-25T08:20:26.590 回答