mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 14:09:16 +02:00
FpDebug,LazDebugger: changes to MemManager to allow avr-read-register-as-address
This commit is contained in:
parent
86c274950e
commit
c2e59c7885
@ -600,11 +600,7 @@ begin
|
|||||||
FRemoteConfig.Assign(AProcessConfig);
|
FRemoteConfig.Assign(AProcessConfig);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Create own memory manager to manage register address reads
|
inherited Create(AFileName, AnOsClasses, AMemManager, AProcessConfig);
|
||||||
// Pass through other helper classes as is
|
|
||||||
FMemManager := TAvrMemManager.Create(AMemManager.MemReader, AMemManager.TargetMemConvertor, AMemManager.SelfMemConvertor);
|
|
||||||
|
|
||||||
inherited Create(AFileName, AnOsClasses, FMemManager);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TDbgAvrProcess.Destroy;
|
destructor TDbgAvrProcess.Destroy;
|
||||||
@ -613,8 +609,6 @@ begin
|
|||||||
FreeAndNil(FConnection);
|
FreeAndNil(FConnection);
|
||||||
if Assigned(FRemoteConfig) then
|
if Assigned(FRemoteConfig) then
|
||||||
FreeAndNil(FRemoteConfig);
|
FreeAndNil(FRemoteConfig);
|
||||||
if Assigned(FMemManager) then
|
|
||||||
FreeAndNil(FMemManager);
|
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -603,6 +603,7 @@ type
|
|||||||
|
|
||||||
TDbgInstance = class(TObject)
|
TDbgInstance = class(TObject)
|
||||||
private
|
private
|
||||||
|
FMemManager: TFpDbgMemManager;
|
||||||
FMode: TFPDMode;
|
FMode: TFPDMode;
|
||||||
FFileName: String;
|
FFileName: String;
|
||||||
FProcess: TDbgProcess;
|
FProcess: TDbgProcess;
|
||||||
@ -617,7 +618,6 @@ type
|
|||||||
function FindProcSymbol(AAdress: TDbgPtr): TFpSymbol; overload;
|
function FindProcSymbol(AAdress: TDbgPtr): TFpSymbol; overload;
|
||||||
protected
|
protected
|
||||||
FDbgInfo: TDbgInfo;
|
FDbgInfo: TDbgInfo;
|
||||||
FMemManager: TFpDbgMemManager;
|
|
||||||
procedure InitializeLoaders; virtual;
|
procedure InitializeLoaders; virtual;
|
||||||
procedure SetFileName(const AValue: String);
|
procedure SetFileName(const AValue: String);
|
||||||
procedure SetMode(AMode: TFPDMode); experimental; // for testcase
|
procedure SetMode(AMode: TFPDMode); experimental; // for testcase
|
||||||
|
@ -896,9 +896,6 @@ property DwarfSymbolClassMapList: TFpSymbolDwarfClassMapList read GetDwarfSymbol
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
|
||||||
FpDbgCommon;
|
|
||||||
|
|
||||||
var
|
var
|
||||||
FPDBG_DWARF_ERRORS, FPDBG_DWARF_WARNINGS, FPDBG_DWARF_SEARCH, FPDBG_DWARF_VERBOSE,
|
FPDBG_DWARF_ERRORS, FPDBG_DWARF_WARNINGS, FPDBG_DWARF_SEARCH, FPDBG_DWARF_VERBOSE,
|
||||||
// FPDBG_DWARF_DATA_WARNINGS,
|
// FPDBG_DWARF_DATA_WARNINGS,
|
||||||
|
@ -428,6 +428,7 @@ type
|
|||||||
*)
|
*)
|
||||||
function ReadRegister(ARegNum: Cardinal; out AValue: TDbgPtr; AContext: TFpDbgLocationContext {= nil}): Boolean;
|
function ReadRegister(ARegNum: Cardinal; out AValue: TDbgPtr; AContext: TFpDbgLocationContext {= nil}): Boolean;
|
||||||
function ReadRegisterAsAddress(ARegNum: Cardinal; out AValue: TDbgPtr; AContext: TFpDbgLocationContext {= nil}): Boolean; virtual;
|
function ReadRegisterAsAddress(ARegNum: Cardinal; out AValue: TDbgPtr; AContext: TFpDbgLocationContext {= nil}): Boolean; virtual;
|
||||||
|
property MemReader: TFpDbgMemReaderBase read FMemReader;
|
||||||
public
|
public
|
||||||
procedure SetCacheManager(ACacheMgr: TFpDbgMemCacheManagerBase);
|
procedure SetCacheManager(ACacheMgr: TFpDbgMemCacheManagerBase);
|
||||||
property CacheManager: TFpDbgMemCacheManagerBase read GetCacheManager;
|
property CacheManager: TFpDbgMemCacheManagerBase read GetCacheManager;
|
||||||
@ -456,7 +457,6 @@ type
|
|||||||
property PartialReadResultLenght: QWord read FPartialReadResultLenght;
|
property PartialReadResultLenght: QWord read FPartialReadResultLenght;
|
||||||
property LastError: TFpError read FLastError;
|
property LastError: TFpError read FLastError;
|
||||||
property MemLimits: TFpDbgMemLimits read FMemLimits;
|
property MemLimits: TFpDbgMemLimits read FMemLimits;
|
||||||
property MemReader: TFpDbgMemReaderBase read FMemReader;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function NilLoc: TFpDbgMemLocation; inline;
|
function NilLoc: TFpDbgMemLocation; inline;
|
||||||
|
@ -382,6 +382,9 @@ type
|
|||||||
procedure GetCurrentThreadAndStackFrame(out AThreadId, AStackFrame: Integer);
|
procedure GetCurrentThreadAndStackFrame(out AThreadId, AStackFrame: Integer);
|
||||||
function GetContextForEvaluate(const ThreadId, StackFrame: Integer): TFpDbgSymbolScope;
|
function GetContextForEvaluate(const ThreadId, StackFrame: Integer): TFpDbgSymbolScope;
|
||||||
|
|
||||||
|
function CreateMemReader: TDbgMemReader; virtual;
|
||||||
|
function CreateMemConverter: TFpDbgMemConvertor; virtual;
|
||||||
|
function CreateMemManager: TFpDbgMemManager; virtual;
|
||||||
function CreateLineInfo: TDBGLineInfo; override;
|
function CreateLineInfo: TDBGLineInfo; override;
|
||||||
function CreateWatches: TWatchesSupplier; override;
|
function CreateWatches: TWatchesSupplier; override;
|
||||||
function CreateThreads: TThreadsSupplier; override;
|
function CreateThreads: TThreadsSupplier; override;
|
||||||
@ -3583,6 +3586,21 @@ begin
|
|||||||
Result := FindSymbolScope(ThreadId, StackFrame);
|
Result := FindSymbolScope(ThreadId, StackFrame);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TFpDebugDebugger.CreateMemReader: TDbgMemReader;
|
||||||
|
begin
|
||||||
|
Result := TFpDbgMemReader.Create(self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TFpDebugDebugger.CreateMemConverter: TFpDbgMemConvertor;
|
||||||
|
begin
|
||||||
|
Result := TFpDbgMemConvertorLittleEndian.Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TFpDebugDebugger.CreateMemManager: TFpDbgMemManager;
|
||||||
|
begin
|
||||||
|
Result := TFpDbgMemManager.Create(FMemReader, FMemConverter);
|
||||||
|
end;
|
||||||
|
|
||||||
function TFpDebugDebugger.GetClassInstanceName(AnAddr: TDBGPtr): string;
|
function TFpDebugDebugger.GetClassInstanceName(AnAddr: TDBGPtr): string;
|
||||||
var
|
var
|
||||||
AnErr: TFpError;
|
AnErr: TFpError;
|
||||||
@ -4590,9 +4608,9 @@ begin
|
|||||||
FBreakUpdateList := TBreakPointUpdateList.create();
|
FBreakUpdateList := TBreakPointUpdateList.create();
|
||||||
FExceptionStepper := TFpDebugExceptionStepping.Create(Self);
|
FExceptionStepper := TFpDebugExceptionStepping.Create(Self);
|
||||||
FPrettyPrinter := TFpPascalPrettyPrinter.Create(sizeof(pointer));
|
FPrettyPrinter := TFpPascalPrettyPrinter.Create(sizeof(pointer));
|
||||||
FMemReader := TFpDbgMemReader.Create(self);
|
FMemReader := CreateMemReader;
|
||||||
FMemConverter := TFpDbgMemConvertorLittleEndian.Create;
|
FMemConverter := CreateMemConverter;
|
||||||
FMemManager := TFpDbgMemManager.Create(FMemReader, FMemConverter);
|
FMemManager := CreateMemManager;
|
||||||
FMemManager.MemLimits.MaxMemReadSize := TFpDebugDebuggerProperties(GetProperties).MemLimits.MaxMemReadSize;
|
FMemManager.MemLimits.MaxMemReadSize := TFpDebugDebuggerProperties(GetProperties).MemLimits.MaxMemReadSize;
|
||||||
FMemManager.MemLimits.MaxArrayLen := TFpDebugDebuggerProperties(GetProperties).MemLimits.MaxArrayLen;
|
FMemManager.MemLimits.MaxArrayLen := TFpDebugDebuggerProperties(GetProperties).MemLimits.MaxArrayLen;
|
||||||
FMemManager.MemLimits.MaxStringLen := TFpDebugDebuggerProperties(GetProperties).MemLimits.MaxStringLen;
|
FMemManager.MemLimits.MaxStringLen := TFpDebugDebuggerProperties(GetProperties).MemLimits.MaxStringLen;
|
||||||
|
@ -22,7 +22,7 @@ type
|
|||||||
FDbgController: TDbgController;
|
FDbgController: TDbgController;
|
||||||
FMemManager: TFpDbgMemManager;
|
FMemManager: TFpDbgMemManager;
|
||||||
FMemReader: TDbgMemReader;
|
FMemReader: TDbgMemReader;
|
||||||
FMemConverter: TFpDbgMemConvertorLittleEndian;
|
FMemConverter: TFpDbgMemConvertor;
|
||||||
FLockList: TFpDbgLockList;
|
FLockList: TFpDbgLockList;
|
||||||
FWorkQueue: TFpThreadPriorityWorkerQueue;
|
FWorkQueue: TFpThreadPriorityWorkerQueue;
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ type
|
|||||||
property DbgController: TDbgController read FDbgController;
|
property DbgController: TDbgController read FDbgController;
|
||||||
property MemManager: TFpDbgMemManager read FMemManager;
|
property MemManager: TFpDbgMemManager read FMemManager;
|
||||||
property MemReader: TDbgMemReader read FMemReader;
|
property MemReader: TDbgMemReader read FMemReader;
|
||||||
property MemConverter: TFpDbgMemConvertorLittleEndian read FMemConverter;
|
property MemConverter: TFpDbgMemConvertor read FMemConverter;
|
||||||
property LockList: TFpDbgLockList read FLockList;
|
property LockList: TFpDbgLockList read FLockList;
|
||||||
property WorkQueue: TFpThreadPriorityWorkerQueue read FWorkQueue;
|
property WorkQueue: TFpThreadPriorityWorkerQueue read FWorkQueue;
|
||||||
end;
|
end;
|
||||||
|
@ -66,6 +66,8 @@ type
|
|||||||
private
|
private
|
||||||
FProcessConfig: TRemoteConfig;
|
FProcessConfig: TRemoteConfig;
|
||||||
procedure UpdateProcessConfig;
|
procedure UpdateProcessConfig;
|
||||||
|
protected
|
||||||
|
function CreateMemManager: TFpDbgMemManager; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AExternalDebugger: String); override;
|
constructor Create(const AExternalDebugger: String); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -96,6 +98,11 @@ begin
|
|||||||
TRemoteConfig(FProcessConFig).SkipSectionsList.Assign(AProperties.SkipUploadOfSectionList);
|
TRemoteConfig(FProcessConFig).SkipSectionsList.Assign(AProperties.SkipUploadOfSectionList);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TFpRspRemoteDebugger.CreateMemManager: TFpDbgMemManager;
|
||||||
|
begin
|
||||||
|
Result := TAvrMemManager.Create(FMemReader, FMemConverter);
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TFpRspRemoteDebugger.Create(const AExternalDebugger: String);
|
constructor TFpRspRemoteDebugger.Create(const AExternalDebugger: String);
|
||||||
begin
|
begin
|
||||||
inherited Create(AExternalDebugger);
|
inherited Create(AExternalDebugger);
|
||||||
|
Loading…
Reference in New Issue
Block a user