Debugger: introduce watch type skFunctionRef

git-svn-id: trunk@61520 -
This commit is contained in:
martin 2019-07-03 18:26:31 +00:00
parent fa7ee1a8bb
commit 9f1b5ca3f2
4 changed files with 12 additions and 8 deletions

View File

@ -32,6 +32,8 @@ type
skUnit, // contains syms defined in this unit skUnit, // contains syms defined in this unit
skProcedure, // an actual procedure, with an address // NOT just the type of a procedure skProcedure, // an actual procedure, with an address // NOT just the type of a procedure
skFunction, skFunction,
skProcedureRef, // a variable containing (a reference to a) procedure (some debuggers may return skProcedure)
skFunctionRef,
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
//----------------- Basic types, these cannot have references or children //----------------- Basic types, these cannot have references or children
skSimple, // Any of the below (in this group), the dbg does not know more detailed skSimple, // Any of the below (in this group), the dbg does not know more detailed

View File

@ -116,6 +116,8 @@ begin
skInterface: ; skInterface: ;
skProcedure: ; skProcedure: ;
skFunction: ; skFunction: ;
skProcedureRef: ;
skFunctionRef: ;
skArray: ; skArray: ;
// skPointer: svfOrdinal, svfCardinal, svfDataAddress are all the same value // skPointer: svfOrdinal, svfCardinal, svfDataAddress are all the same value
skPointer: ExpFlags(AVal, [svfOrdinal, svfCardinal, svfDataAddress, svfSizeOfPointer], [svfMembers, svfIdentifier]); skPointer: ExpFlags(AVal, [svfOrdinal, svfCardinal, svfDataAddress, svfSizeOfPointer], [svfMembers, svfIdentifier]);

View File

@ -647,10 +647,10 @@ begin
FGridData.Cells[0,k]:=fld.ClassName; FGridData.Cells[0,k]:=fld.ClassName;
FGridData.Cells[4,k]:=FieldLocationNames[fld.Location]; FGridData.Cells[4,k]:=FieldLocationNames[fld.Location];
end; end;
skProcedure: skProcedure,skProcedureRef:
begin begin
end; end;
skFunction: skFunction,skFunctionRef:
begin begin
end; end;
skPointer: skPointer:
@ -675,7 +675,7 @@ begin
k:=0; k:=0;
for j := 0 to FDBGInfo.Fields.Count-1 do begin for j := 0 to FDBGInfo.Fields.Count-1 do begin
case FDBGInfo.Fields[j].DBGType.Kind of case FDBGInfo.Fields[j].DBGType.Kind of
skProcedure,skFunction: inc(k); skProcedure,skFunction,skProcedureRef, skFunctionRef: inc(k);
end; end;
end; end;
k:=k+1; k:=k+1;
@ -684,7 +684,7 @@ begin
k:=0; k:=0;
for j := 0 to FDBGInfo.Fields.Count-1 do begin for j := 0 to FDBGInfo.Fields.Count-1 do begin
case FDBGInfo.Fields[j].DBGType.Kind of case FDBGInfo.Fields[j].DBGType.Kind of
skProcedure: skProcedure, skProcedureRef:
begin begin
inc(k); inc(k);
FGridMethods.Cells[0,k]:=FDBGInfo.Fields[j].Name; FGridMethods.Cells[0,k]:=FDBGInfo.Fields[j].Name;
@ -696,7 +696,7 @@ begin
FGridMethods.Cells[2,k]:=''; FGridMethods.Cells[2,k]:='';
FGridMethods.Cells[3,k]:='???'; FGridMethods.Cells[3,k]:='???';
end; end;
skFunction: skFunction, skFunctionRef:
begin begin
inc(k); inc(k);
FGridMethods.Cells[0,k]:=FDBGInfo.Fields[j].Name; FGridMethods.Cells[0,k]:=FDBGInfo.Fields[j].Name;
@ -874,8 +874,8 @@ begin
skVariant: InspectVariant(); skVariant: InspectVariant();
skEnum: InspectEnum; skEnum: InspectEnum;
skSet: InspectSet; skSet: InspectSet;
skProcedure: InspectSimple; skProcedure, skProcedureRef: InspectSimple;
skFunction: InspectSimple; skFunction, skFunctionRef: InspectSimple;
skSimple, skSimple,
skInteger, skInteger,
skCardinal, skBoolean, skChar, skFloat: InspectSimple(); skCardinal, skBoolean, skChar, skFloat: InspectSimple();

View File

@ -800,7 +800,7 @@ begin
else else
InspectMemo.Append(t.Fields[i].Name + ': ' + t.Fields[i].DBGType.Value.AsString); InspectMemo.Append(t.Fields[i].Name + ': ' + t.Fields[i].DBGType.Value.AsString);
end; end;
skProcedure, skFunction: ; skProcedure, skFunction, skProcedureRef, skFunctionRef: ;
else else
InspectMemo.Append(t.Fields[i].Name + ': ' + t.Fields[i].DBGType.Value.AsString); InspectMemo.Append(t.Fields[i].Name + ': ' + t.Fields[i].DBGType.Value.AsString);
end; end;