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