mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-19 04:19:09 +02:00
LazDebuggerGdbmiFp: Improve workaround for FPC issue 37658 / Check both: full-path, and no-path.
(cherry picked from commit ca16a22cea
)
This commit is contained in:
parent
de33a8216c
commit
aeb382738d
@ -693,8 +693,10 @@ end;
|
|||||||
function TFpGDBMILineInfo.HasAddress(const AIndex: Integer; const ALine: Integer
|
function TFpGDBMILineInfo.HasAddress(const AIndex: Integer; const ALine: Integer
|
||||||
): Boolean;
|
): Boolean;
|
||||||
var
|
var
|
||||||
Map: PDWarfLineMap;
|
Map, Map2: PDWarfLineMap;
|
||||||
dummy: TDBGPtrArray;
|
dummy: TDBGPtrArray;
|
||||||
|
FullName, BaseName: String;
|
||||||
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
if not FpDebugger.HasDwarf then
|
if not FpDebugger.HasDwarf then
|
||||||
@ -703,6 +705,21 @@ begin
|
|||||||
Map := PDWarfLineMap(FRequestedSources.Objects[AIndex]);
|
Map := PDWarfLineMap(FRequestedSources.Objects[AIndex]);
|
||||||
if Map <> nil then
|
if Map <> nil then
|
||||||
Result := Map^.GetAddressesForLine(ALine, dummy, True);
|
Result := Map^.GetAddressesForLine(ALine, dummy, True);
|
||||||
|
|
||||||
|
if map = nil then begin
|
||||||
|
FullName := FRequestedSources[AIndex];
|
||||||
|
BaseName := ExtractFileName(FullName);
|
||||||
|
if (FullName <> BaseName) then begin
|
||||||
|
i := FRequestedSources.IndexOf(BaseName);
|
||||||
|
if i >= 0 then begin
|
||||||
|
Map2 := PDWarfLineMap(FRequestedSources.Objects[i]);
|
||||||
|
if (Map2 <> nil) and (Map2 <> Map) then begin
|
||||||
|
dummy:=nil;
|
||||||
|
Result := Map2^.GetAddressesForLine(ALine, dummy, True);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFpGDBMILineInfo.GetInfo(AAdress: TDbgPtr; out ASource, ALine,
|
function TFpGDBMILineInfo.GetInfo(AAdress: TDbgPtr; out ASource, ALine,
|
||||||
@ -722,10 +739,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFpGDBMILineInfo.Request(const ASource: String);
|
procedure TFpGDBMILineInfo.Request(const ASource: String);
|
||||||
|
var
|
||||||
|
BaseName: String;
|
||||||
begin
|
begin
|
||||||
if not FpDebugger.HasDwarf then
|
if not FpDebugger.HasDwarf then
|
||||||
exit;
|
exit;
|
||||||
FRequestedSources.AddObject(ASource, TObject(FpDebugger.FDwarfInfo.GetLineAddressMap(ASource)));
|
FRequestedSources.AddObject(ASource, TObject(FpDebugger.FDwarfInfo.GetLineAddressMap(ASource)));
|
||||||
|
BaseName := ExtractFileName(ASource);
|
||||||
|
if (ASource <> BaseName) and (IndexOf(BaseName) < 0) then
|
||||||
|
FRequestedSources.AddObject(ASource, TObject(FpDebugger.FDwarfInfo.GetLineAddressMap(BaseName)));
|
||||||
DoChange(ASource);
|
DoChange(ASource);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user