作为一名司机开发者,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. *
*******************************************************************************
在早期版本中并非如此。有没有解决的办法?我还没找到的选项,注册表项或者我可以修补可执行文件吗?
答案 0 :(得分:0)
有趣。警告消息来自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
我怀疑只修补这一张支票是不够的,但我还没有进一步确认。
答案 1 :(得分:0)
您可以通过以下命令将int 3(字节0xCC)放在任何地址:eb [address] cc
确保在按下int 3时恢复原始字节。