From c9beb9dffe26d256ef406a661e6e3838df994368 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 12 Sep 2019 15:33:12 +0000 Subject: [PATCH] FpDebug: Windows, fixed Process.Continue with single step request git-svn-id: trunk@61866 - --- components/fpdebug/fpdbgwinclasses.pas | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/components/fpdebug/fpdbgwinclasses.pas b/components/fpdebug/fpdbgwinclasses.pas index dfe51691d5..fc6e01b9f9 100644 --- a/components/fpdebug/fpdbgwinclasses.pas +++ b/components/fpdebug/fpdbgwinclasses.pas @@ -621,11 +621,15 @@ debugln(['TDbgWinProcess.Continue ',SingleStep]); if HasInsertedBreakInstructionAtLocation(EventThread.GetInstructionPointerRegisterValue) then begin debugln(['## skip brkpoint ',AThread= EventThread, ' iss ',EventThread.NextIsSingleStep]); TDbgWinThread(EventThread).SetSingleStepOverBreakPoint; + for t in FThreadMap do TDbgWinThread(t).SuspendForStepOverBreakPoint; end else begin // EventThread does not need to skip a breakpoint; + if (EventThread = AThread) and (SingleStep) then + TDbgWinThread(EventThread).SetSingleStep; + b := False; for t in FThreadMap do if TDbgWinThread(t).FIsSkippingBreakPoint then begin @@ -642,7 +646,8 @@ debugln(['## skip brkpoint (others only) ',AThread= EventThread, ' iss ',EventT end; end; - AThread := nil; // Already handled, might be suspended + if (AThread = EventThread) or (TDbgWinThread(AThread).FIsSuspended) then + AThread := nil; // Already handled, or suspended end; if assigned(AThread) then