LazDebuggerFpLLDB: load dwarf info in thread / simplify clean up

git-svn-id: trunk@59824 -
This commit is contained in:
martin 2018-12-14 10:51:26 +00:00
parent 8965b70a28
commit e72387cbeb

View File

@ -315,6 +315,9 @@ begin
FDwarfInfo := TFpDwarfInfo.Create(FImageLoaderList); FDwarfInfo := TFpDwarfInfo.Create(FImageLoaderList);
FDwarfInfo.MemManager := FMemManager; FDwarfInfo.MemManager := FMemManager;
if Terminated then
exit;
FDwarfInfo.LoadCompilationUnits; FDwarfInfo.LoadCompilationUnits;
debugln(DBG_VERBOSE, ['finish THREAD TFpLldbDebugger.LoadDwarf ']); debugln(DBG_VERBOSE, ['finish THREAD TFpLldbDebugger.LoadDwarf ']);
end; end;
@ -1099,16 +1102,10 @@ begin
if FDwarfLoaderThread <> nil then begin if FDwarfLoaderThread <> nil then begin
debugln(DBG_VERBOSE, ['Terminate FDwarfLoaderThread ']); debugln(DBG_VERBOSE, ['Terminate FDwarfLoaderThread ']);
FDwarfLoaderThread.Suspend; FDwarfLoaderThread.Terminate;
if FDwarfLoaderThread.Finished then begin FDwarfLoaderThread.WaitFor; // This may take a while, but normally the thread should never exist in UnLoadDwarf
FDwarfLoaderThread.FreeDwarf; FDwarfLoaderThread.FreeDwarf;
FDwarfLoaderThread.Free FreeAndNil(FDwarfLoaderThread);
end else begin
FDwarfLoaderThread.FreeOnTerminate := True;
FDwarfLoaderThread.Terminate;
FDwarfLoaderThread.Resume;
end;
FDwarfLoaderThread := nil;
end; end;
end; end;