最近在做一些 pydbg 测试,所以我不得不删除注册表中的 AeDebug 条目(它决定了 JIT 调试器),而 Windbg 是(现在也是)我的 JIT 调试器。在删除之前导出密钥。它是:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
这些值是:
(Default) REG_SZ (value not set)
Auto REG_SZ 1
Debugger REG_SZ "C:\...\windbg.exe" -p %ld -e %ld -g
UserDebuggerHotKey REG_DWORD 0x00000000 (0)
现在我不得不在 Windbg 中测试其他一些东西,所以我在 .reg 文件中添加了导出的 AeDebug 密钥。
但是,当我尝试运行一些与 int 3h/0xCC 联系的测试汇编程序(这应该使 Windbg 作为我的 JIT 调试器出现)时,我的系统在没有蓝屏死机的情况下冻结,我必须关闭/重新打开电源。
我已经删除了所有 AeDebug 并重新运行“windbg -I”以将其注册为我的 JIT 调试器。但是,我仍然遇到系统冻结!
请帮忙!到目前为止,只有当我运行的代码中包含 int 3h 断点时才会发生这种情况。
我尝试运行我用以下内容编译的程序集 (masm32) 程序进行测试:
.586
.model flat, stdcall
option casemap:none
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\windows.inc
.code
start:
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
int 3h
invoke ExitProcess, 0
END start
但是,系统仍然冻结。当我首先运行 windbg 并退出断点时,它会像正常一样退出,但不会影响我的整个系统。
如何再次获得不会导致未定义行为的正常断点?