Debugger: refactor

git-svn-id: trunk@44466 -
This commit is contained in:
martin 2014-03-18 15:49:01 +00:00
parent 9246646d0f
commit 245d81b151
5 changed files with 180 additions and 119 deletions

View File

@ -572,6 +572,7 @@ type
); );
TWatchBase = class; TWatchBase = class;
TWatchesMonitor = class;
{ TWatchValueBase } { TWatchValueBase }
@ -658,15 +659,17 @@ type
TWatchesSupplier = class(TDebuggerDataSupplier) TWatchesSupplier = class(TDebuggerDataSupplier)
private private
FCurrentWatches: TWatches; function GetCurrentWatches: TWatches;
function GetMonitor: TWatchesMonitor;
procedure SetMonitor(AValue: TWatchesMonitor);
protected protected
procedure DoNewMonitor; override;
procedure DoStateChange(const AOldState: TDBGState); override; // workaround for state changes during TWatchValue.GetValue procedure DoStateChange(const AOldState: TDBGState); override; // workaround for state changes during TWatchValue.GetValue
procedure InternalRequestData(AWatchValue: TWatchValueBase); virtual; procedure InternalRequestData(AWatchValue: TWatchValueBase); virtual;
public public
constructor Create(const ADebugger: TDebuggerIntf); constructor Create(const ADebugger: TDebuggerIntf);
procedure RequestData(AWatchValue: TWatchValueBase); procedure RequestData(AWatchValue: TWatchValueBase);
property CurrentWatches: TWatches read FCurrentWatches write FCurrentWatches; property CurrentWatches: TWatches read GetCurrentWatches;
property Monitor: TWatchesMonitor read GetMonitor write SetMonitor;
end; end;
{ TWatchesMonitor } { TWatchesMonitor }
@ -674,12 +677,15 @@ type
TWatchesMonitor = class(TDebuggerDataMonitor) TWatchesMonitor = class(TDebuggerDataMonitor)
private private
FWatches: TWatches; FWatches: TWatches;
function GetSupplier: TWatchesSupplier;
procedure SetSupplier(AValue: TWatchesSupplier);
protected protected
function CreateWatches: TWatches; virtual; function CreateWatches: TWatches; virtual;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
property Watches: TWatches read FWatches; property Watches: TWatches read FWatches;
property Supplier: TWatchesSupplier read GetSupplier write SetSupplier;
end; end;
{%endregion ^^^^^ Watches ^^^^^ } {%endregion ^^^^^ Watches ^^^^^ }
@ -693,6 +699,7 @@ type
******************************************************************************} ******************************************************************************}
// TODO: a more watch-like value object // TODO: a more watch-like value object
TLocalsMonitor = class;
{ TLocalsValue } { TLocalsValue }
@ -743,12 +750,14 @@ type
TLocalsSupplier = class(TDebuggerDataSupplier) TLocalsSupplier = class(TDebuggerDataSupplier)
private private
FCurrentLocalsList: TLocalsList; function GetCurrentLocalsList: TLocalsList;
function GetMonitor: TLocalsMonitor;
procedure SetMonitor(AValue: TLocalsMonitor);
protected protected
procedure DoNewMonitor; override;
public public
procedure RequestData(ALocals: TLocals); virtual; procedure RequestData(ALocals: TLocals); virtual;
property CurrentLocalsList: TLocalsList read FCurrentLocalsList write FCurrentLocalsList; property CurrentLocalsList: TLocalsList read GetCurrentLocalsList;
property Monitor: TLocalsMonitor read GetMonitor write SetMonitor;
end; end;
{ TLocalsMonitor } { TLocalsMonitor }
@ -756,12 +765,15 @@ type
TLocalsMonitor = class(TDebuggerDataMonitor) TLocalsMonitor = class(TDebuggerDataMonitor)
private private
FLocalsList: TLocalsList; FLocalsList: TLocalsList;
function GetSupplier: TLocalsSupplier;
procedure SetSupplier(AValue: TLocalsSupplier);
protected protected
function CreateLocalsList: TLocalsList; virtual; function CreateLocalsList: TLocalsList; virtual;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
property LocalsList: TLocalsList read FLocalsList; property LocalsList: TLocalsList read FLocalsList;
property Supplier: TLocalsSupplier read GetSupplier write SetSupplier;
end; end;
{%endregion ^^^^^ Locals ^^^^^ } {%endregion ^^^^^ Locals ^^^^^ }
@ -822,6 +834,7 @@ type
TRegisterDisplayFormat = (rdDefault, rdHex, rdBinary, rdOctal, rdDecimal, rdRaw); TRegisterDisplayFormat = (rdDefault, rdHex, rdBinary, rdOctal, rdDecimal, rdRaw);
TRegisterDisplayFormats = set of TRegisterDisplayFormat; TRegisterDisplayFormats = set of TRegisterDisplayFormat;
TRegistersMonitor = class;
{ TRegisterDisplayValue } { TRegisterDisplayValue }
@ -914,12 +927,14 @@ type
TRegisterSupplier = class(TDebuggerDataSupplier) TRegisterSupplier = class(TDebuggerDataSupplier)
private private
FCurrentRegistersList: TRegistersList; function GetCurrentRegistersList: TRegistersList;
function GetMonitor: TRegistersMonitor;
procedure SetMonitor(AValue: TRegistersMonitor);
protected protected
procedure DoNewMonitor; override;
public public
procedure RequestData(ARegisters: TRegisters); virtual; procedure RequestData(ARegisters: TRegisters); virtual;
property CurrentRegistersList: TRegistersList read FCurrentRegistersList write FCurrentRegistersList; property CurrentRegistersList: TRegistersList read GetCurrentRegistersList;
property Monitor: TRegistersMonitor read GetMonitor write SetMonitor;
end; end;
{ TRegistersMonitor } { TRegistersMonitor }
@ -927,12 +942,15 @@ type
TRegistersMonitor = class(TDebuggerDataMonitor) TRegistersMonitor = class(TDebuggerDataMonitor)
private private
FRegistersList: TRegistersList; FRegistersList: TRegistersList;
function GetSupplier: TRegisterSupplier;
procedure SetSupplier(AValue: TRegisterSupplier);
protected protected
function CreateRegistersList: TRegistersList; virtual; function CreateRegistersList: TRegistersList; virtual;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
property RegistersList: TRegistersList read FRegistersList; property RegistersList: TRegistersList read FRegistersList;
property Supplier: TRegisterSupplier read GetSupplier write SetSupplier;
end; end;
{%endregion ^^^^^ Register ^^^^^ } {%endregion ^^^^^ Register ^^^^^ }
@ -950,7 +968,7 @@ type
* TCallStackEntry needs to stay a readonly object so its data can be shared * * TCallStackEntry needs to stay a readonly object so its data can be shared *
******************************************************************************} ******************************************************************************}
{ TCallStackEntry } TCallStackMonitor = class;
{ TCallStackEntryBase } { TCallStackEntryBase }
@ -1052,9 +1070,10 @@ type
TCallStackSupplier = class(TDebuggerDataSupplier) TCallStackSupplier = class(TDebuggerDataSupplier)
private private
FCurrentCallStackList: TCallStackList; function GetCurrentCallStackList: TCallStackList;
function GetMonitor: TCallStackMonitor;
procedure SetMonitor(AValue: TCallStackMonitor);
protected protected
procedure DoNewMonitor; override;
//procedure CurrentChanged; //procedure CurrentChanged;
procedure Changed; procedure Changed;
public public
@ -1063,7 +1082,8 @@ type
procedure RequestCurrent(ACallstack: TCallStackBase); virtual; procedure RequestCurrent(ACallstack: TCallStackBase); virtual;
procedure RequestEntries(ACallstack: TCallStackBase); virtual; procedure RequestEntries(ACallstack: TCallStackBase); virtual;
procedure UpdateCurrentIndex; virtual; procedure UpdateCurrentIndex; virtual;
property CurrentCallStackList: TCallStackList read FCurrentCallStackList write FCurrentCallStackList; property CurrentCallStackList: TCallStackList read GetCurrentCallStackList;
property Monitor: TCallStackMonitor read GetMonitor write SetMonitor;
end; end;
{ TCallStackMonitor } { TCallStackMonitor }
@ -1071,12 +1091,15 @@ type
TCallStackMonitor = class(TDebuggerDataMonitor) TCallStackMonitor = class(TDebuggerDataMonitor)
private private
FCallStackList: TCallStackList; FCallStackList: TCallStackList;
function GetSupplier: TCallStackSupplier;
procedure SetSupplier(AValue: TCallStackSupplier);
protected protected
function CreateCallStackList: TCallStackList; virtual; function CreateCallStackList: TCallStackList; virtual;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
property CallStackList: TCallStackList read FCallStackList; property CallStackList: TCallStackList read FCallStackList;
property Supplier: TCallStackSupplier read GetSupplier write SetSupplier;
end; end;
{%endregion ^^^^^ Callstack ^^^^^ } {%endregion ^^^^^ Callstack ^^^^^ }
@ -1252,6 +1275,8 @@ type
****************************************************************************** ******************************************************************************
******************************************************************************} ******************************************************************************}
TThreadsMonitor = class;
{ TThreadsBase } { TThreadsBase }
TThreads = class(TObject) TThreads = class(TObject)
@ -1282,9 +1307,10 @@ type
TThreadsSupplier = class(TDebuggerDataSupplier) TThreadsSupplier = class(TDebuggerDataSupplier)
private private
FCurrentThreads: TThreads; function GetCurrentThreads: TThreads;
function GetMonitor: TThreadsMonitor;
procedure SetMonitor(AValue: TThreadsMonitor);
protected protected
procedure DoNewMonitor; override;
procedure DoStateChange(const AOldState: TDBGState); override; procedure DoStateChange(const AOldState: TDBGState); override;
procedure DoStateLeavePauseClean; override; procedure DoStateLeavePauseClean; override;
procedure DoCleanAfterPause; virtual; procedure DoCleanAfterPause; virtual;
@ -1292,7 +1318,8 @@ type
procedure RequestMasterData; virtual; procedure RequestMasterData; virtual;
procedure ChangeCurrentThread({%H-}ANewId: Integer); virtual; procedure ChangeCurrentThread({%H-}ANewId: Integer); virtual;
procedure Changed; // TODO: needed because entries can not notify the monitor procedure Changed; // TODO: needed because entries can not notify the monitor
property CurrentThreads: TThreads read FCurrentThreads write FCurrentThreads; property CurrentThreads: TThreads read GetCurrentThreads;
property Monitor: TThreadsMonitor read GetMonitor write SetMonitor;
end; end;
{ TThreadsMonitor } { TThreadsMonitor }
@ -1300,12 +1327,15 @@ type
TThreadsMonitor = class(TDebuggerDataMonitor) TThreadsMonitor = class(TDebuggerDataMonitor)
private private
FThreads: TThreads; FThreads: TThreads;
function GetSupplier: TThreadsSupplier;
procedure SetSupplier(AValue: TThreadsSupplier);
protected protected
function CreateThreads: TThreads; virtual; function CreateThreads: TThreads; virtual;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
property Threads: TThreads read FThreads; property Threads: TThreads read FThreads;
property Supplier: TThreadsSupplier read GetSupplier write SetSupplier;
end; end;
{%endregion ^^^^^ Threads ^^^^^ } {%endregion ^^^^^ Threads ^^^^^ }
@ -1850,6 +1880,16 @@ end;
{ TThreadsMonitor } { TThreadsMonitor }
function TThreadsMonitor.GetSupplier: TThreadsSupplier;
begin
Result := TThreadsSupplier(inherited Supplier);
end;
procedure TThreadsMonitor.SetSupplier(AValue: TThreadsSupplier);
begin
inherited Supplier := AValue;
end;
function TThreadsMonitor.CreateThreads: TThreads; function TThreadsMonitor.CreateThreads: TThreads;
begin begin
Result := TThreads.Create; Result := TThreads.Create;
@ -1869,6 +1909,16 @@ end;
{ TRegistersMonitor } { TRegistersMonitor }
function TRegistersMonitor.GetSupplier: TRegisterSupplier;
begin
Result := TRegisterSupplier(inherited Supplier);
end;
procedure TRegistersMonitor.SetSupplier(AValue: TRegisterSupplier);
begin
inherited Supplier := AValue;
end;
function TRegistersMonitor.CreateRegistersList: TRegistersList; function TRegistersMonitor.CreateRegistersList: TRegistersList;
begin begin
Result := TRegistersList.Create; Result := TRegistersList.Create;
@ -2029,10 +2079,21 @@ end;
{ TRegisterSupplier } { TRegisterSupplier }
procedure TRegisterSupplier.DoNewMonitor; function TRegisterSupplier.GetCurrentRegistersList: TRegistersList;
begin begin
inherited DoNewMonitor; Result := nil;
FCurrentRegistersList := nil; if Monitor <> nil then
Result := Monitor.RegistersList;
end;
function TRegisterSupplier.GetMonitor: TRegistersMonitor;
begin
Result := TRegistersMonitor(inherited Monitor);
end;
procedure TRegisterSupplier.SetMonitor(AValue: TRegistersMonitor);
begin
inherited Monitor := AValue;
end; end;
procedure TRegisterSupplier.RequestData(ARegisters: TRegisters); procedure TRegisterSupplier.RequestData(ARegisters: TRegisters);
@ -3157,10 +3218,21 @@ begin
else AWatchValue.SetValidity(ddsInvalid); else AWatchValue.SetValidity(ddsInvalid);
end; end;
procedure TWatchesSupplier.DoNewMonitor; function TWatchesSupplier.GetCurrentWatches: TWatches;
begin begin
inherited DoNewMonitor; Result := Nil;
FCurrentWatches := nil; if Monitor <> nil then
Result := Monitor.Watches;
end;
function TWatchesSupplier.GetMonitor: TWatchesMonitor;
begin
Result := TWatchesMonitor(inherited Monitor);
end;
procedure TWatchesSupplier.SetMonitor(AValue: TWatchesMonitor);
begin
inherited Monitor := AValue;
end; end;
procedure TWatchesSupplier.DoStateChange(const AOldState: TDBGState); procedure TWatchesSupplier.DoStateChange(const AOldState: TDBGState);
@ -3184,6 +3256,16 @@ end;
{ TWatchesMonitor } { TWatchesMonitor }
function TWatchesMonitor.GetSupplier: TWatchesSupplier;
begin
Result := TWatchesSupplier(inherited Supplier);
end;
procedure TWatchesMonitor.SetSupplier(AValue: TWatchesSupplier);
begin
inherited Supplier := AValue;
end;
function TWatchesMonitor.CreateWatches: TWatches; function TWatchesMonitor.CreateWatches: TWatches;
begin begin
Result := TWatches.Create; Result := TWatches.Create;
@ -3203,10 +3285,21 @@ end;
{ TLocalsSupplier } { TLocalsSupplier }
procedure TLocalsSupplier.DoNewMonitor; function TLocalsSupplier.GetCurrentLocalsList: TLocalsList;
begin begin
inherited DoNewMonitor; Result := nil;
FCurrentLocalsList := nil; if Monitor <> nil then
Result := Monitor.LocalsList;
end;
function TLocalsSupplier.GetMonitor: TLocalsMonitor;
begin
Result := TLocalsMonitor(inherited Monitor);
end;
procedure TLocalsSupplier.SetMonitor(AValue: TLocalsMonitor);
begin
inherited Monitor := AValue;
end; end;
procedure TLocalsSupplier.RequestData(ALocals: TLocals); procedure TLocalsSupplier.RequestData(ALocals: TLocals);
@ -3216,6 +3309,16 @@ end;
{ TLocalsMonitor } { TLocalsMonitor }
function TLocalsMonitor.GetSupplier: TLocalsSupplier;
begin
Result := TLocalsSupplier(inherited Supplier);
end;
procedure TLocalsMonitor.SetSupplier(AValue: TLocalsSupplier);
begin
inherited Supplier := AValue;
end;
function TLocalsMonitor.CreateLocalsList: TLocalsList; function TLocalsMonitor.CreateLocalsList: TLocalsList;
begin begin
Result := TLocalsList.Create; Result := TLocalsList.Create;
@ -3317,10 +3420,21 @@ begin
Monitor.DoModified; Monitor.DoModified;
end; end;
procedure TCallStackSupplier.DoNewMonitor; function TCallStackSupplier.GetCurrentCallStackList: TCallStackList;
begin begin
inherited DoNewMonitor; Result := nil;
FCurrentCallStackList := nil; if Monitor <> nil then
Result := Monitor.CallStackList;
end;
function TCallStackSupplier.GetMonitor: TCallStackMonitor;
begin
Result := TCallStackMonitor(inherited Monitor);
end;
procedure TCallStackSupplier.SetMonitor(AValue: TCallStackMonitor);
begin
inherited Monitor := AValue;
end; end;
procedure TCallStackSupplier.RequestCount(ACallstack: TCallStackBase); procedure TCallStackSupplier.RequestCount(ACallstack: TCallStackBase);
@ -3377,6 +3491,16 @@ end;
{ TCallStackMonitor } { TCallStackMonitor }
function TCallStackMonitor.GetSupplier: TCallStackSupplier;
begin
Result := TCallStackSupplier(inherited Supplier);
end;
procedure TCallStackMonitor.SetSupplier(AValue: TCallStackSupplier);
begin
inherited Supplier := AValue;
end;
function TCallStackMonitor.CreateCallStackList: TCallStackList; function TCallStackMonitor.CreateCallStackList: TCallStackList;
begin begin
Result := TCallStackList.Create; Result := TCallStackList.Create;
@ -3402,9 +3526,21 @@ begin
then Monitor.DoModified; then Monitor.DoModified;
end; end;
procedure TThreadsSupplier.DoNewMonitor; function TThreadsSupplier.GetCurrentThreads: TThreads;
begin begin
FCurrentThreads := nil; Result := nil;
if Monitor <> nil then
Result := Monitor.Threads;
end;
function TThreadsSupplier.GetMonitor: TThreadsMonitor;
begin
Result := TThreadsMonitor(inherited Monitor);
end;
procedure TThreadsSupplier.SetMonitor(AValue: TThreadsMonitor);
begin
inherited Monitor := AValue;
end; end;
procedure TThreadsSupplier.ChangeCurrentThread(ANewId: Integer); procedure TThreadsSupplier.ChangeCurrentThread(ANewId: Integer);
@ -3431,8 +3567,8 @@ end;
procedure TThreadsSupplier.DoCleanAfterPause; procedure TThreadsSupplier.DoCleanAfterPause;
begin begin
if FCurrentThreads <> nil then if CurrentThreads <> nil then
FCurrentThreads.Clear; CurrentThreads.Clear;
if Monitor <> nil then if Monitor <> nil then
Monitor.DoModified; Monitor.DoModified;
end; end;

View File

@ -790,13 +790,10 @@ type
FNotificationList: TWatchesNotificationList; FNotificationList: TWatchesNotificationList;
function GetCurrentWatches: TCurrentWatches; function GetCurrentWatches: TCurrentWatches;
function GetSnapshot(AnID: Pointer): TIdeWatches; function GetSnapshot(AnID: Pointer): TIdeWatches;
function GetSupplier: TWatchesSupplier;
procedure SetSupplier(const AValue: TWatchesSupplier);
protected protected
procedure DoStateEnterPause; override; procedure DoStateEnterPause; override;
procedure DoStateLeavePause; override; procedure DoStateLeavePause; override;
procedure DoStateLeavePauseClean; override; procedure DoStateLeavePauseClean; override;
procedure DoNewSupplier; override;
procedure DoModified; override; procedure DoModified; override;
//procedure NotifyChange //procedure NotifyChange
procedure NotifyAdd(const AWatches: TCurrentWatches; const AWatch: TCurrentWatch); procedure NotifyAdd(const AWatches: TCurrentWatches; const AWatch: TCurrentWatch);
@ -814,7 +811,6 @@ type
procedure RemoveSnapshot(AnID: Pointer); procedure RemoveSnapshot(AnID: Pointer);
property CurrentWatches: TCurrentWatches read GetCurrentWatches;// FCurrentWatches; property CurrentWatches: TCurrentWatches read GetCurrentWatches;// FCurrentWatches;
property Snapshots[AnID: Pointer]: TIdeWatches read GetSnapshot; property Snapshots[AnID: Pointer]: TIdeWatches read GetSnapshot;
property Supplier: TWatchesSupplier read GetSupplier write SetSupplier;
public public
procedure Clear; procedure Clear;
procedure LoadFromXMLConfig(const AConfig: TXMLConfig; const APath: string); procedure LoadFromXMLConfig(const AConfig: TXMLConfig; const APath: string);
@ -916,8 +912,6 @@ type
FNotificationList: TDebuggerChangeNotificationList; FNotificationList: TDebuggerChangeNotificationList;
function GetCurrentLocalsList: TCurrentLocalsList; function GetCurrentLocalsList: TCurrentLocalsList;
function GetSnapshot(AnID: Pointer): TIDELocalsList; function GetSnapshot(AnID: Pointer): TIDELocalsList;
function GetSupplier: TLocalsSupplier;
procedure SetSupplier(const AValue: TLocalsSupplier);
protected protected
procedure DoStateEnterPause; override; procedure DoStateEnterPause; override;
procedure DoStateLeavePause; override; procedure DoStateLeavePause; override;
@ -937,7 +931,6 @@ type
procedure RemoveSnapshot(AnID: Pointer); procedure RemoveSnapshot(AnID: Pointer);
property CurrentLocalsList: TCurrentLocalsList read GetCurrentLocalsList; property CurrentLocalsList: TCurrentLocalsList read GetCurrentLocalsList;
property Snapshots[AnID: Pointer]: TIDELocalsList read GetSnapshot; property Snapshots[AnID: Pointer]: TIDELocalsList read GetSnapshot;
property Supplier: TLocalsSupplier read GetSupplier write SetSupplier;
end; end;
{%endregion ^^^^^ Locals ^^^^^ } {%endregion ^^^^^ Locals ^^^^^ }
@ -1062,8 +1055,6 @@ type
FNotificationList: TDebuggerChangeNotificationList; FNotificationList: TDebuggerChangeNotificationList;
FFlags: set of (rmNeedNotifyChange); FFlags: set of (rmNeedNotifyChange);
function GetCurrentRegistersList: TCurrentIDERegistersList; function GetCurrentRegistersList: TCurrentIDERegistersList;
function GetSupplier: TRegisterSupplier;
procedure SetSupplier(const AValue: TRegisterSupplier);
protected protected
procedure DoStateEnterPause; override; procedure DoStateEnterPause; override;
//procedure DoStateLeavePause; override; //procedure DoStateLeavePause; override;
@ -1082,7 +1073,6 @@ type
procedure RemoveNotification(const ANotification: TRegistersNotification); procedure RemoveNotification(const ANotification: TRegistersNotification);
property CurrentRegistersList: TCurrentIDERegistersList read GetCurrentRegistersList; property CurrentRegistersList: TCurrentIDERegistersList read GetCurrentRegistersList;
//property Snapshots[AnID: Pointer]: TIDERegistersList read GetSnapshot; //property Snapshots[AnID: Pointer]: TIDERegistersList read GetSnapshot;
property Supplier: TRegisterSupplier read GetSupplier write SetSupplier;
end; end;
{%endregion ^^^^^ Register ^^^^^ } {%endregion ^^^^^ Register ^^^^^ }
@ -1331,8 +1321,6 @@ type
procedure CallStackClear(Sender: TObject); procedure CallStackClear(Sender: TObject);
function GetCurrentCallStackList: TCurrentCallStackList; function GetCurrentCallStackList: TCurrentCallStackList;
function GetSnapshot(AnID: Pointer): TIdeCallStackList; function GetSnapshot(AnID: Pointer): TIdeCallStackList;
function GetSupplier: TCallStackSupplier;
procedure SetSupplier(const AValue: TCallStackSupplier);
protected protected
procedure DoStateEnterPause; override; procedure DoStateEnterPause; override;
procedure DoStateLeavePause; override; procedure DoStateLeavePause; override;
@ -1357,7 +1345,6 @@ type
procedure NotifyCurrent; procedure NotifyCurrent;
property CurrentCallStackList: TCurrentCallStackList read GetCurrentCallStackList; property CurrentCallStackList: TCurrentCallStackList read GetCurrentCallStackList;
property Snapshots[AnID: Pointer]: TIdeCallStackList read GetSnapshot; property Snapshots[AnID: Pointer]: TIdeCallStackList read GetSnapshot;
property Supplier: TCallStackSupplier read GetSupplier write SetSupplier;
property UnitInfoProvider: TDebuggerUnitInfoProvider // Provided by DebugBoss, to map files to packages or project property UnitInfoProvider: TDebuggerUnitInfoProvider // Provided by DebugBoss, to map files to packages or project
read FUnitInfoProvider write FUnitInfoProvider; read FUnitInfoProvider write FUnitInfoProvider;
end; end;
@ -1532,8 +1519,6 @@ type
FNotificationList: TDebuggerChangeNotificationList; FNotificationList: TDebuggerChangeNotificationList;
function GetCurrentThreads: TCurrentThreads; function GetCurrentThreads: TCurrentThreads;
function GetSnapshot(AnID: Pointer): TIdeThreads; function GetSnapshot(AnID: Pointer): TIdeThreads;
function GetSupplier: TThreadsSupplier;
procedure SetSupplier(const AValue: TThreadsSupplier);
protected protected
procedure DoModified; override; procedure DoModified; override;
procedure DoStateEnterPause; override; procedure DoStateEnterPause; override;
@ -1556,7 +1541,6 @@ type
procedure CurrentChanged; procedure CurrentChanged;
property CurrentThreads: TCurrentThreads read GetCurrentThreads; property CurrentThreads: TCurrentThreads read GetCurrentThreads;
property Snapshots[AnID: Pointer]: TIdeThreads read GetSnapshot; property Snapshots[AnID: Pointer]: TIdeThreads read GetSnapshot;
property Supplier: TThreadsSupplier read GetSupplier write SetSupplier;
property UnitInfoProvider: TDebuggerUnitInfoProvider // Provided by DebugBoss, to map files to packages or project property UnitInfoProvider: TDebuggerUnitInfoProvider // Provided by DebugBoss, to map files to packages or project
read FUnitInfoProvider write FUnitInfoProvider; read FUnitInfoProvider write FUnitInfoProvider;
end; end;
@ -3176,11 +3160,6 @@ end;
{ TIdeLocalsMonitor } { TIdeLocalsMonitor }
function TIdeLocalsMonitor.GetSupplier: TLocalsSupplier;
begin
Result := TLocalsSupplier(inherited Supplier);
end;
function TIdeLocalsMonitor.GetSnapshot(AnID: Pointer): TIDELocalsList; function TIdeLocalsMonitor.GetSnapshot(AnID: Pointer): TIDELocalsList;
begin begin
Result := TIDELocalsList(FSnapshots.SnapShot[AnID]); Result := TIDELocalsList(FSnapshots.SnapShot[AnID]);
@ -3191,11 +3170,6 @@ begin
Result := TCurrentLocalsList(LocalsList);; Result := TCurrentLocalsList(LocalsList);;
end; end;
procedure TIdeLocalsMonitor.SetSupplier(const AValue: TLocalsSupplier);
begin
inherited Supplier := AValue;
end;
procedure TIdeLocalsMonitor.DoStateEnterPause; procedure TIdeLocalsMonitor.DoStateEnterPause;
begin begin
inherited DoStateEnterPause; inherited DoStateEnterPause;
@ -3227,8 +3201,6 @@ procedure TIdeLocalsMonitor.DoNewSupplier;
begin begin
inherited DoNewSupplier; inherited DoNewSupplier;
NotifyChange(nil); NotifyChange(nil);
if Supplier <> nil then
Supplier.CurrentLocalsList := CurrentLocalsList;
end; end;
procedure TIdeLocalsMonitor.RequestData(ALocals: TCurrentLocals); procedure TIdeLocalsMonitor.RequestData(ALocals: TCurrentLocals);
@ -3631,11 +3603,6 @@ end;
{ TIdeWatchesMonitor } { TIdeWatchesMonitor }
function TIdeWatchesMonitor.GetSupplier: TWatchesSupplier;
begin
Result := TWatchesSupplier(inherited Supplier);
end;
function TIdeWatchesMonitor.GetSnapshot(AnID: Pointer): TIdeWatches; function TIdeWatchesMonitor.GetSnapshot(AnID: Pointer): TIdeWatches;
begin begin
Result := TIdeWatches(FSnapshots.SnapShot[AnID]); Result := TIdeWatches(FSnapshots.SnapShot[AnID]);
@ -3646,11 +3613,6 @@ begin
Result := TCurrentWatches(Watches); Result := TCurrentWatches(Watches);
end; end;
procedure TIdeWatchesMonitor.SetSupplier(const AValue: TWatchesSupplier);
begin
inherited Supplier := AValue;
end;
procedure TIdeWatchesMonitor.DoStateEnterPause; procedure TIdeWatchesMonitor.DoStateEnterPause;
begin begin
inherited DoStateEnterPause; inherited DoStateEnterPause;
@ -3675,13 +3637,6 @@ begin
NotifyUpdate(CurrentWatches, nil); NotifyUpdate(CurrentWatches, nil);
end; end;
procedure TIdeWatchesMonitor.DoNewSupplier;
begin
inherited DoNewSupplier;
if Supplier <> nil then
Supplier.CurrentWatches := CurrentWatches;
end;
procedure TIdeWatchesMonitor.DoModified; procedure TIdeWatchesMonitor.DoModified;
begin begin
if (FIgnoreModified = 0) and Assigned(FOnModified) then if (FIgnoreModified = 0) and Assigned(FOnModified) then
@ -4366,11 +4321,6 @@ end;
{ TIdeThreadsMonitor } { TIdeThreadsMonitor }
function TIdeThreadsMonitor.GetSupplier: TThreadsSupplier;
begin
Result := TThreadsSupplier(inherited Supplier);
end;
function TIdeThreadsMonitor.GetSnapshot(AnID: Pointer): TIdeThreads; function TIdeThreadsMonitor.GetSnapshot(AnID: Pointer): TIdeThreads;
begin begin
Result := TIdeThreads(FSnapshots.SnapShot[AnID]); Result := TIdeThreads(FSnapshots.SnapShot[AnID]);
@ -4381,11 +4331,6 @@ begin
Result :=TCurrentThreads(Threads); Result :=TCurrentThreads(Threads);
end; end;
procedure TIdeThreadsMonitor.SetSupplier(const AValue: TThreadsSupplier);
begin
inherited Supplier := AValue;
end;
procedure TIdeThreadsMonitor.DoModified; procedure TIdeThreadsMonitor.DoModified;
begin begin
Changed; Changed;
@ -4418,8 +4363,6 @@ begin
inherited DoNewSupplier; inherited DoNewSupplier;
if CurrentThreads <> nil then if CurrentThreads <> nil then
CurrentThreads.SetValidity(ddsUnknown); CurrentThreads.SetValidity(ddsUnknown);
if Supplier <> nil then
Supplier.CurrentThreads := CurrentThreads;
end; end;
procedure TIdeThreadsMonitor.RequestData; procedure TIdeThreadsMonitor.RequestData;
@ -6435,21 +6378,11 @@ end;
{ TIdeRegistersMonitor } { TIdeRegistersMonitor }
function TIdeRegistersMonitor.GetSupplier: TRegisterSupplier;
begin
Result := TRegisterSupplier(inherited Supplier);
end;
function TIdeRegistersMonitor.GetCurrentRegistersList: TCurrentIDERegistersList; function TIdeRegistersMonitor.GetCurrentRegistersList: TCurrentIDERegistersList;
begin begin
Result := TCurrentIDERegistersList(RegistersList); Result := TCurrentIDERegistersList(RegistersList);
end; end;
procedure TIdeRegistersMonitor.SetSupplier(const AValue: TRegisterSupplier);
begin
inherited Supplier := AValue;
end;
procedure TIdeRegistersMonitor.DoStateEnterPause; procedure TIdeRegistersMonitor.DoStateEnterPause;
begin begin
inherited DoStateEnterPause; inherited DoStateEnterPause;
@ -6485,8 +6418,6 @@ procedure TIdeRegistersMonitor.DoNewSupplier;
begin begin
inherited DoNewSupplier; inherited DoNewSupplier;
NotifyChange(nil); NotifyChange(nil);
if Supplier <> nil then
Supplier.CurrentRegistersList := CurrentRegistersList;
end; end;
procedure TIdeRegistersMonitor.RequestData(ARegisters: TCurrentIDERegisters); procedure TIdeRegistersMonitor.RequestData(ARegisters: TCurrentIDERegisters);
@ -7040,11 +6971,6 @@ begin
FreeAndNil(FSnapshots); FreeAndNil(FSnapshots);
end; end;
procedure TIdeCallStackMonitor.SetSupplier(const AValue: TCallStackSupplier);
begin
inherited Supplier := AValue;
end;
procedure TIdeCallStackMonitor.DoStateEnterPause; procedure TIdeCallStackMonitor.DoStateEnterPause;
begin begin
inherited DoStateEnterPause; inherited DoStateEnterPause;
@ -7110,8 +7036,6 @@ procedure TIdeCallStackMonitor.DoNewSupplier;
begin begin
inherited DoNewSupplier; inherited DoNewSupplier;
NotifyChange; NotifyChange;
if Supplier <> nil then
Supplier.CurrentCallStackList := CurrentCallStackList;
end; end;
procedure TIdeCallStackMonitor.CallStackClear(Sender: TObject); procedure TIdeCallStackMonitor.CallStackClear(Sender: TObject);
@ -7132,11 +7056,6 @@ begin
Result := TIdeCallStackList(FSnapshots.SnapShot[AnID]); Result := TIdeCallStackList(FSnapshots.SnapShot[AnID]);
end; end;
function TIdeCallStackMonitor.GetSupplier: TCallStackSupplier;
begin
Result := TCallStackSupplier(inherited Supplier);
end;
procedure TIdeCallStackMonitor.NotifyChange; procedure TIdeCallStackMonitor.NotifyChange;
begin begin
FNotificationList.NotifyChange(Self); FNotificationList.NotifyChange(Self);

View File

@ -25,7 +25,7 @@
{%region GLOBAL} {%region GLOBAL}
{$IFDEF Global_Type} {$IFDEF Global_Type}
//type //type
TEnum = (One, Two, Three); TEnum = (One, Two, Three, Four, Five, Six);
TEnumSet = set of TEnum; TEnumSet = set of TEnum;
TSet = Set of (Alpha, Beta, Gamma); TSet = Set of (Alpha, Beta, Gamma);
{$ENDIF} {$ENDIF}
@ -35,6 +35,9 @@
GlobEnum: TEnum; GlobEnum: TEnum;
GlobEnumSet: TEnumSet; GlobEnumSet: TEnumSet;
GlobSet: TSet; GlobSet: TSet;
GlobSubEnum: Two..Four;
GlobSubRange1: 9..77;
GlobSubRange2: -9..-7;
{$ENDIF} {$ENDIF}
{$IFDEF Global_Body} {$IFDEF Global_Body}
@ -42,6 +45,9 @@
GlobEnum := Two; GlobEnum := Two;
GlobEnumSet := [Two, Three]; GlobEnumSet := [Two, Three];
GlobSet := [Alpha, Beta]; GlobSet := [Alpha, Beta];
GlobSubEnum := Two;
GlobSubRange1 := 55;
GlobSubRange2 := -8;
{$ENDIF} {$ENDIF}
{$IFDEF Global_Body_NIL} {$IFDEF Global_Body_NIL}

View File

@ -210,7 +210,7 @@ type
FLineInfo: TIDELineInfo; FLineInfo: TIDELineInfo;
FWatches: TIdeWatchesMonitor; FWatches: TIdeWatchesMonitor;
FThreads: TIdeThreadsMonitor; FThreads: TIdeThreadsMonitor;
FRegisters: TIdeRegistersMonitor; FRegisters: TRegistersMonitor;
private private
FParent: TGDBTestsuite; FParent: TGDBTestsuite;
FTestBaseName: String; FTestBaseName: String;
@ -283,7 +283,7 @@ type
property Disassembler: TIDEDisassembler read FDisassembler; property Disassembler: TIDEDisassembler read FDisassembler;
property Locals: TIdeLocalsMonitor read FLocals; property Locals: TIdeLocalsMonitor read FLocals;
property LineInfo: TIDELineInfo read FLineInfo; property LineInfo: TIDELineInfo read FLineInfo;
property Registers: TIdeRegistersMonitor read FRegisters; property Registers: TRegistersMonitor read FRegisters;
//property Signals: TBaseSignals read FSignals; // A list of actions for signals we know of //property Signals: TBaseSignals read FSignals; // A list of actions for signals we know of
property Watches: TIdeWatchesMonitor read FWatches; property Watches: TIdeWatchesMonitor read FWatches;
property Threads: TIdeThreadsMonitor read FThreads; property Threads: TIdeThreadsMonitor read FThreads;
@ -534,7 +534,7 @@ begin
FLineInfo := TIDELineInfo.Create; FLineInfo := TIDELineInfo.Create;
FCallStack := TIdeCallStackMonitor.Create; FCallStack := TIdeCallStackMonitor.Create;
FDisassembler := TIDEDisassembler.Create; FDisassembler := TIDEDisassembler.Create;
FRegisters := TIdeRegistersMonitor.Create; FRegisters := TRegistersMonitor.Create;
Result := GdbClass.Create(DebuggerInfo.ExeName); Result := GdbClass.Create(DebuggerInfo.ExeName);
Result.OnDbgOutput := @InternalDbgOutPut; Result.OnDbgOutput := @InternalDbgOutPut;

View File

@ -51,7 +51,7 @@ type
FLineInfo: TIDELineInfo; FLineInfo: TIDELineInfo;
FWatches: TIdeWatchesMonitor; FWatches: TIdeWatchesMonitor;
FThreads: TIdeThreadsMonitor; FThreads: TIdeThreadsMonitor;
FRegisters: TIdeRegistersMonitor; FRegisters: TRegistersMonitor;
published published
procedure RangeMap; procedure RangeMap;
procedure Disassemble; procedure Disassemble;
@ -342,7 +342,7 @@ var
FLocals := TIdeLocalsMonitor.Create; FLocals := TIdeLocalsMonitor.Create;
FLineInfo := TIDELineInfo.Create; FLineInfo := TIDELineInfo.Create;
FCallStack := TIdeCallStackMonitor.Create; FCallStack := TIdeCallStackMonitor.Create;
FRegisters := TIdeRegistersMonitor.Create; FRegisters := TRegistersMonitor.Create;
//TManagedBreakpoints(FBreakpoints).Master := FDebugger.BreakPoints; //TManagedBreakpoints(FBreakpoints).Master := FDebugger.BreakPoints;
FWatches.Supplier := Gdb.Watches; FWatches.Supplier := Gdb.Watches;