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