mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 04:59:08 +02:00
* Ignore debugger errors when creating locals
git-svn-id: trunk@13742 -
This commit is contained in:
parent
73343131f6
commit
273bdea671
@ -2620,22 +2620,28 @@ begin
|
|||||||
|
|
||||||
// args
|
// args
|
||||||
TGDBMIDebugger(Debugger).ExecuteCommand('-stack-list-arguments 1 %0:d %0:d',
|
TGDBMIDebugger(Debugger).ExecuteCommand('-stack-list-arguments 1 %0:d %0:d',
|
||||||
[TGDBMIDebugger(Debugger).FCurrentStackFrame], [], R);
|
[TGDBMIDebugger(Debugger).FCurrentStackFrame], [cfIgnoreError], R);
|
||||||
List := CreateMIValueList(R);
|
if R.State <> dsError
|
||||||
S := List.Values['stack-args'];
|
then begin
|
||||||
FreeAndNil(List);
|
List := CreateMIValueList(R);
|
||||||
List := CreateMIValueList(S);
|
S := List.Values['stack-args'];
|
||||||
S := List.Values['frame'];
|
FreeAndNil(List);
|
||||||
FreeAndNil(List);
|
List := CreateMIValueList(S);
|
||||||
List := CreateMIValueList(S);
|
S := List.Values['frame'];
|
||||||
AddLocals(List.Values['args']);
|
FreeAndNil(List);
|
||||||
FreeAndNil(List);
|
List := CreateMIValueList(S);
|
||||||
|
AddLocals(List.Values['args']);
|
||||||
|
FreeAndNil(List);
|
||||||
|
end;
|
||||||
|
|
||||||
// variables
|
// variables
|
||||||
TGDBMIDebugger(Debugger).ExecuteCommand('-stack-list-locals 1', [], R);
|
TGDBMIDebugger(Debugger).ExecuteCommand('-stack-list-locals 1', [cfIgnoreError], R);
|
||||||
List := CreateMIValueList(R);
|
if R.State <> dsError
|
||||||
AddLocals(List.Values['locals']);
|
then begin
|
||||||
FreeAndNil(List);
|
List := CreateMIValueList(R);
|
||||||
|
AddLocals(List.Values['locals']);
|
||||||
|
FreeAndNil(List);
|
||||||
|
end;
|
||||||
FLocalsValid := True;
|
FLocalsValid := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2784,51 +2790,58 @@ begin
|
|||||||
if Debugger = nil then Exit;
|
if Debugger = nil then Exit;
|
||||||
|
|
||||||
Arguments := TStringList.Create;
|
Arguments := TStringList.Create;
|
||||||
TGDBMIDebugger(Debugger).ExecuteCommand('-stack-list-arguments 1 %d %d',
|
TGDBMIDebugger(Debugger).ExecuteCommand('-stack-list-arguments 1 %0:d %0:d',
|
||||||
[AIndex, AIndex], [cfIgnoreError], R);
|
[AIndex], [cfIgnoreError], R);
|
||||||
// TODO: check what to display on error
|
// TODO: check what to display on error
|
||||||
|
|
||||||
List := CreateMIValueList(R);
|
if R.State <> dsError
|
||||||
S := List.Values['stack-args'];
|
then begin
|
||||||
FreeAndNil(List);
|
List := CreateMIValueList(R);
|
||||||
List := CreateMIValueList(S);
|
S := List.Values['stack-args'];
|
||||||
S := List.Values['frame']; // all arguments
|
FreeAndNil(List);
|
||||||
FreeAndNil(List);
|
List := CreateMIValueList(S);
|
||||||
List := CreateMIValueList(S);
|
S := List.Values['frame']; // all arguments
|
||||||
S := List.Values['args'];
|
FreeAndNil(List);
|
||||||
FreeAndNil(List);
|
List := CreateMIValueList(S);
|
||||||
|
S := List.Values['args'];
|
||||||
|
FreeAndNil(List);
|
||||||
|
|
||||||
|
ArgList := CreateMIValueList(S);
|
||||||
|
for n := 0 to ArgList.Count - 1 do
|
||||||
|
begin
|
||||||
|
List := CreateMIValueList(ArgList[n]);
|
||||||
|
Arguments.Add(List.Values['name'] + '=' + List.Values['value']);
|
||||||
|
FreeAndNil(List);
|
||||||
|
end;
|
||||||
|
FreeAndNil(ArgList);
|
||||||
|
end;
|
||||||
|
|
||||||
ArgList := CreateMIValueList(S);
|
TGDBMIDebugger(Debugger).ExecuteCommand('-stack-list-frames %0:d %0:d',
|
||||||
for n := 0 to ArgList.Count - 1 do
|
[AIndex], [cfIgnoreError], R);
|
||||||
begin
|
if R.State <> dsError
|
||||||
List := CreateMIValueList(ArgList[n]);
|
then begin
|
||||||
Arguments.Add(List.Values['name'] + '=' + List.Values['value']);
|
List := CreateMIValueList(R);
|
||||||
|
S := List.Values['stack'];
|
||||||
|
FreeAndNil(List);
|
||||||
|
List := CreateMIValueList(S);
|
||||||
|
S := List.Values['frame'];
|
||||||
|
FreeAndNil(List);
|
||||||
|
List := CreateMIValueList(S);
|
||||||
|
addr := 0;
|
||||||
|
Val(List.Values['addr'], addr, e);
|
||||||
|
if e=0 then ;
|
||||||
|
Result := TCallStackEntry.Create(
|
||||||
|
AIndex,
|
||||||
|
addr,
|
||||||
|
Arguments,
|
||||||
|
List.Values['func'],
|
||||||
|
List.Values['file'],
|
||||||
|
StrToIntDef(List.Values['line'], 0)
|
||||||
|
);
|
||||||
|
|
||||||
FreeAndNil(List);
|
FreeAndNil(List);
|
||||||
end;
|
end;
|
||||||
FreeAndNil(ArgList);
|
|
||||||
|
|
||||||
TGDBMIDebugger(Debugger).ExecuteCommand('-stack-list-frames %d %d',
|
|
||||||
[AIndex, AIndex], [], R);
|
|
||||||
List := CreateMIValueList(R);
|
|
||||||
S := List.Values['stack'];
|
|
||||||
FreeAndNil(List);
|
|
||||||
List := CreateMIValueList(S);
|
|
||||||
S := List.Values['frame'];
|
|
||||||
FreeAndNil(List);
|
|
||||||
List := CreateMIValueList(S);
|
|
||||||
addr := 0;
|
|
||||||
Val(List.Values['addr'], addr, e);
|
|
||||||
if e=0 then ;
|
|
||||||
Result := TCallStackEntry.Create(
|
|
||||||
AIndex,
|
|
||||||
addr,
|
|
||||||
Arguments,
|
|
||||||
List.Values['func'],
|
|
||||||
List.Values['file'],
|
|
||||||
StrToIntDef(List.Values['line'], 0)
|
|
||||||
);
|
|
||||||
|
|
||||||
FreeAndNil(List);
|
|
||||||
Arguments.Free;
|
Arguments.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user