FpDebug: Improve step-commands for threads. Events in other threads, do not need single-stepping

git-svn-id: trunk@63059 -
This commit is contained in:
martin 2020-04-24 20:08:07 +00:00
parent ec587a8ac1
commit 35706ffaa6

View File

@ -503,10 +503,12 @@ procedure TDbgControllerHiddenBreakStepBaseCmd.DoContinue(AProcess: TDbgProcess;
var var
r: Boolean; r: Boolean;
begin begin
if (AThread = FThread) then if (AThread <> FThread) then begin
r := NextInstruction.IsReturnInstruction FProcess.Continue(FProcess, AThread, False);
else exit;
r := False; end;
r := NextInstruction.IsReturnInstruction;
InternalContinue(AProcess, AThread); InternalContinue(AProcess, AThread);
if r and if r and
@ -521,7 +523,6 @@ procedure TDbgControllerStepOverInstructionCmd.InternalContinue(
AProcess: TDbgProcess; AThread: TDbgThread); AProcess: TDbgProcess; AThread: TDbgThread);
begin begin
assert(FProcess=AProcess, 'TDbgControllerStepOverInstructionCmd.DoContinue: FProcess=AProcess'); assert(FProcess=AProcess, 'TDbgControllerStepOverInstructionCmd.DoContinue: FProcess=AProcess');
if (AThread = FThread) then
CheckForCallAndSetBreak; CheckForCallAndSetBreak;
FProcess.Continue(FProcess, FThread, FHiddenBreakpoint = nil); FProcess.Continue(FProcess, FThread, FHiddenBreakpoint = nil);
end; end;
@ -641,7 +642,7 @@ procedure TDbgControllerStepIntoLineCmd.InternalContinue(AProcess: TDbgProcess;
AThread: TDbgThread); AThread: TDbgThread);
begin begin
assert(FProcess=AProcess, 'TDbgControllerStepIntoLineCmd.DoContinue: FProcess=AProcess'); assert(FProcess=AProcess, 'TDbgControllerStepIntoLineCmd.DoContinue: FProcess=AProcess');
if (FState = siSteppingCurrent) and (AThread = FThread) then if (FState = siSteppingCurrent) then
begin begin
if CheckForCallAndSetBreak then begin if CheckForCallAndSetBreak then begin
FState := siSteppingIn; FState := siSteppingIn;
@ -720,7 +721,6 @@ procedure TDbgControllerStepOverLineCmd.InternalContinue(AProcess: TDbgProcess;
AThread: TDbgThread); AThread: TDbgThread);
begin begin
assert(FProcess=AProcess, 'TDbgControllerStepOverLineCmd.DoContinue: FProcess=AProcess'); assert(FProcess=AProcess, 'TDbgControllerStepOverLineCmd.DoContinue: FProcess=AProcess');
if (AThread = FThread) then
CheckForCallAndSetBreak; CheckForCallAndSetBreak;
if FHiddenBreakpoint = nil then if FHiddenBreakpoint = nil then