mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-16 16:09:30 +02:00
Add InternalExceptionBreakPoints property to LazDebuggerFp properties.
This commit is contained in:
parent
3149c5261f
commit
0375bb8ae9
@ -2795,35 +2795,46 @@ begin
|
||||
end;
|
||||
|
||||
procedure TFpDebugExceptionStepping.DoProcessLoaded;
|
||||
var
|
||||
InternalExceptionBPSettings: TInternalExceptionBreakPoints;
|
||||
begin
|
||||
FBreakEnabled := [];
|
||||
FBreakNewEnabled := [];
|
||||
debuglnEnter(DBG_BREAKPOINTS, ['>> TFpDebugDebugger.SetSoftwareExceptionBreakpoint FPC_RAISEEXCEPTION' ]);
|
||||
FBreakPoints[bplRaise] := FDebugger.AddBreak('FPC_RAISEEXCEPTION');
|
||||
FBreakPoints[bplBreakError] := FDebugger.AddBreak('FPC_BREAK_ERROR');
|
||||
FBreakPoints[bplRunError] := FDebugger.AddBreak('FPC_RUNERROR');
|
||||
FBreakPoints[bplReRaise] := FDebugger.AddBreak('FPC_RERAISE', nil, False);
|
||||
FBreakPoints[bplPopExcept] := FDebugger.AddBreak('FPC_POPADDRSTACK', nil, False);
|
||||
FBreakPoints[bplCatches] := FDebugger.AddBreak('FPC_CATCHES', nil, False);
|
||||
{$IFDEF MSWINDOWS}
|
||||
if CurrentProcess.Mode = dm32 then begin
|
||||
FBreakPoints[bplFpcExceptHandler] := FDebugger.AddBreak('__FPC_except_handler', nil, False);
|
||||
FBreakPoints[bplFpcFinallyHandler] := FDebugger.AddBreak('__FPC_finally_handler', nil, False);
|
||||
FBreakPoints[bplFpcLeaveHandler] := FDebugger.AddBreak('_FPC_leave', nil, False);
|
||||
FBreakPoints[bplSehW32Except] := FDebugger.AddBreak(0, False);
|
||||
FBreakPoints[bplSehW32Finally] := FDebugger.AddBreak(0, False);
|
||||
{$IfDef WIN64}
|
||||
end
|
||||
else
|
||||
if CurrentProcess.Mode = dm64 then begin
|
||||
FBreakPoints[bplFpcSpecific] := FDebugger.AddBreak('__FPC_specific_handler', nil, False);
|
||||
FBreakPoints[bplSehW64Except] := FDebugger.AddBreak(0, False);
|
||||
FBreakPoints[bplSehW64Finally] := FDebugger.AddBreak(0, False);
|
||||
FBreakPoints[bplSehW64Unwound] := FDebugger.AddBreak(0, False);
|
||||
{$EndIf}
|
||||
debuglnEnter(DBG_BREAKPOINTS, ['>> TFpDebugDebugger.SetSoftwareExceptionBreakpoints' ]);
|
||||
InternalExceptionBPSettings := TFpDebugDebuggerProperties(FDebugger.GetProperties).InternalExceptionBreakPoints;
|
||||
|
||||
if ieBreakErrorBreakPoint in InternalExceptionBPSettings then
|
||||
FBreakPoints[bplBreakError] := FDebugger.AddBreak('FPC_BREAK_ERROR');
|
||||
|
||||
if ieRunErrorBreakPoint in InternalExceptionBPSettings then
|
||||
FBreakPoints[bplRunError] := FDebugger.AddBreak('FPC_RUNERROR');
|
||||
|
||||
if ieRaiseBreakPoint in InternalExceptionBPSettings then
|
||||
begin
|
||||
FBreakPoints[bplRaise] := FDebugger.AddBreak('FPC_RAISEEXCEPTION');
|
||||
FBreakPoints[bplReRaise] := FDebugger.AddBreak('FPC_RERAISE', nil, False);
|
||||
FBreakPoints[bplPopExcept] := FDebugger.AddBreak('FPC_POPADDRSTACK', nil, False);
|
||||
FBreakPoints[bplCatches] := FDebugger.AddBreak('FPC_CATCHES', nil, False);
|
||||
{$IFDEF MSWINDOWS}
|
||||
if CurrentProcess.Mode = dm32 then begin
|
||||
FBreakPoints[bplFpcExceptHandler] := FDebugger.AddBreak('__FPC_except_handler', nil, False);
|
||||
FBreakPoints[bplFpcFinallyHandler] := FDebugger.AddBreak('__FPC_finally_handler', nil, False);
|
||||
FBreakPoints[bplFpcLeaveHandler] := FDebugger.AddBreak('_FPC_leave', nil, False);
|
||||
FBreakPoints[bplSehW32Except] := FDebugger.AddBreak(0, False);
|
||||
FBreakPoints[bplSehW32Finally] := FDebugger.AddBreak(0, False);
|
||||
{$IfDef WIN64}
|
||||
end
|
||||
else
|
||||
if CurrentProcess.Mode = dm64 then begin
|
||||
FBreakPoints[bplFpcSpecific] := FDebugger.AddBreak('__FPC_specific_handler', nil, False);
|
||||
FBreakPoints[bplSehW64Except] := FDebugger.AddBreak(0, False);
|
||||
FBreakPoints[bplSehW64Finally] := FDebugger.AddBreak(0, False);
|
||||
FBreakPoints[bplSehW64Unwound] := FDebugger.AddBreak(0, False);
|
||||
{$EndIf}
|
||||
end;
|
||||
{$ENDIF}
|
||||
end;
|
||||
{$ENDIF}
|
||||
debuglnExit(DBG_BREAKPOINTS, ['<< TFpDebugDebugger.SetSoftwareExceptionBreakpoint ' ]);
|
||||
debuglnExit(DBG_BREAKPOINTS, ['<< TFpDebugDebugger.SetSoftwareExceptionBreakpoint' ]);
|
||||
end;
|
||||
|
||||
procedure TFpDebugExceptionStepping.DoNtDllLoaded(ALib: TDbgLibrary);
|
||||
|
@ -103,7 +103,7 @@ type
|
||||
|
||||
{ TFpDebugDebuggerProperties }
|
||||
|
||||
TFpDebugDebuggerProperties = class(TDebuggerProperties)
|
||||
TFpDebugDebuggerProperties = class(TCommonDebuggerProperties)
|
||||
private
|
||||
FAutoDeref: Boolean;
|
||||
FConsoleTty: string;
|
||||
@ -133,6 +133,7 @@ type
|
||||
property HandleDebugBreakInstruction: TFpInt3DebugBreakOptions read FHandleDebugBreakInstruction write FHandleDebugBreakInstruction default [dboIgnoreAll];
|
||||
property IntrinsicPrefix: TFpIntrinsicPrefix read FIntrinsicPrefix write FIntrinsicPrefix default ipColon;
|
||||
property AutoDeref: Boolean read FAutoDeref write FAutoDeref default False;
|
||||
property InternalExceptionBreakPoints;
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user