Handle STATUS_WX86_BREAKPOINT and STATUS_WX86_SINGLE_STEP in DebugLoop

When aidbg (x64) debugs a 32-bit target under WoW64, software breakpoints
(int3) surface as STATUS_WX86_BREAKPOINT (0x4000001f) instead of
STATUS_BREAKPOINT (0x80000003), and the step-over single step as
STATUS_WX86_SINGLE_STEP (0x4000001e). Route both to the existing
breakpoint/single-step handling so breakpoints are consumed and restored
correctly; otherwise continue re-stops on the same address forever.
This commit is contained in:
linsmod 2026-08-02 08:14:03 +08:00
parent ccac889f27
commit f425de392c
1 changed files with 2 additions and 0 deletions

View File

@ -591,6 +591,7 @@ __declspec(dllexport) void TITCALL DebugLoop()
switch((LONG)DBGEvent.u.Exception.ExceptionRecord.ExceptionCode)
{
case STATUS_BREAKPOINT:
case STATUS_WX86_BREAKPOINT:
{
bool bFoundBreakPoint = false;
BreakPointDetail FoundBreakPoint;
@ -736,6 +737,7 @@ __declspec(dllexport) void TITCALL DebugLoop()
break;
case STATUS_SINGLE_STEP:
case STATUS_WX86_SINGLE_STEP:
{
if(IsDbgReplyLaterSupported)
{