mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-09 22:15:55 +02:00
Debugger: reset thread on start/init
git-svn-id: trunk@42913 -
This commit is contained in:
parent
c5f9e05da6
commit
b49550e81b
@ -2272,6 +2272,7 @@ type
|
||||
protected
|
||||
procedure ChangeCurrentThread({%H-}ANewId: Integer); virtual;
|
||||
procedure RequestMasterData; virtual;
|
||||
procedure DoStateChange(const AOldState: TDBGState); override;
|
||||
procedure DoStateEnterPause; override;
|
||||
procedure DoStateLeavePause; override;
|
||||
procedure DoStateLeavePauseClean; override;
|
||||
@ -5816,6 +5817,13 @@ begin
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TThreadsSupplier.DoStateChange(const AOldState: TDBGState);
|
||||
begin
|
||||
if (Debugger.State = dsStop) and (CurrentThreads <> nil) then
|
||||
CurrentThreads.Clear;
|
||||
inherited DoStateChange(AOldState);
|
||||
end;
|
||||
|
||||
procedure TThreadsSupplier.DoStateEnterPause;
|
||||
begin
|
||||
if (CurrentThreads = nil) then Exit;
|
||||
@ -6143,6 +6151,7 @@ begin
|
||||
TThreadEntry(Flist[0]).Free;
|
||||
FList.Delete(0);
|
||||
end;
|
||||
FCurrentThreadId := 0;
|
||||
end;
|
||||
|
||||
procedure TThreads.Add(AThread: TThreadEntry);
|
||||
|
@ -7192,6 +7192,8 @@ begin
|
||||
if (State = dsError) and (DebugProcessRunning) then begin
|
||||
FCurrentStackFrameValid := False;
|
||||
FCurrentThreadIdValid := False;
|
||||
FCurrentThreadId := 0;
|
||||
FCurrentStackFrame := 0;
|
||||
SendCmdLn('kill'); // try to kill the debugged process. bypass all queues.
|
||||
DebugProcess.Terminate(0);
|
||||
end;
|
||||
@ -7210,6 +7212,12 @@ end;
|
||||
|
||||
procedure TGDBMIDebugger.DoBeforeState(const OldState: TDBGState);
|
||||
begin
|
||||
if State in [dsStop] then begin
|
||||
FCurrentStackFrameValid := False;
|
||||
FCurrentThreadIdValid := False;
|
||||
FCurrentThreadId := 0;
|
||||
FCurrentStackFrame := 0;
|
||||
end;
|
||||
inherited DoBeforeState(OldState);
|
||||
Threads.CurrentThreads.CurrentThreadId := FCurrentThreadId; // TODO: Works only because CurrentThreadId is always valid
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user