mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-13 22:30:31 +01:00
ide, debugger: implement *step out* debugger action by Flávio Etrusco (issue #0015760)
git-svn-id: trunk@23717 -
This commit is contained in:
parent
b9871028b6
commit
f5fa216d8b
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -3955,6 +3955,7 @@ images/menu/menu_search_previous_bookmark.png -text
|
|||||||
images/menu/menu_search_replace.png -text svneol=unset#image/png
|
images/menu/menu_search_replace.png -text svneol=unset#image/png
|
||||||
images/menu/menu_select_all.png -text svneol=unset#image/png
|
images/menu/menu_select_all.png -text svneol=unset#image/png
|
||||||
images/menu/menu_stepinto.png -text svneol=unset#image/png
|
images/menu/menu_stepinto.png -text svneol=unset#image/png
|
||||||
|
images/menu/menu_stepout.png -text svneol=unset#image/png
|
||||||
images/menu/menu_stepover.png -text svneol=unset#image/png
|
images/menu/menu_stepover.png -text svneol=unset#image/png
|
||||||
images/menu/menu_stop.png -text svneol=unset#image/png
|
images/menu/menu_stop.png -text svneol=unset#image/png
|
||||||
images/menu/menu_tool_check_lfm.png -text svneol=unset#image/png
|
images/menu/menu_tool_check_lfm.png -text svneol=unset#image/png
|
||||||
|
|||||||
@ -57,6 +57,7 @@ type
|
|||||||
dcStop,
|
dcStop,
|
||||||
dcStepOver,
|
dcStepOver,
|
||||||
dcStepInto,
|
dcStepInto,
|
||||||
|
dcStepOut,
|
||||||
dcRunTo,
|
dcRunTo,
|
||||||
dcJumpto,
|
dcJumpto,
|
||||||
dcBreak,
|
dcBreak,
|
||||||
@ -1323,6 +1324,7 @@ type
|
|||||||
procedure Stop; // quit debugging
|
procedure Stop; // quit debugging
|
||||||
procedure StepOver;
|
procedure StepOver;
|
||||||
procedure StepInto;
|
procedure StepInto;
|
||||||
|
procedure StepOut;
|
||||||
procedure RunTo(const ASource: String; const ALine: Integer); // Executes til a certain point
|
procedure RunTo(const ASource: String; const ALine: Integer); // Executes til a certain point
|
||||||
procedure JumpTo(const ASource: String; const ALine: Integer); // No execute, only set exec point
|
procedure JumpTo(const ASource: String; const ALine: Integer); // No execute, only set exec point
|
||||||
function Evaluate(const AExpression: String; var AResult: String;
|
function Evaluate(const AExpression: String; var AResult: String;
|
||||||
@ -1370,6 +1372,7 @@ const
|
|||||||
'Stop',
|
'Stop',
|
||||||
'StepOver',
|
'StepOver',
|
||||||
'StepInto',
|
'StepInto',
|
||||||
|
'StepOut',
|
||||||
'RunTo',
|
'RunTo',
|
||||||
'Jumpto',
|
'Jumpto',
|
||||||
'Break',
|
'Break',
|
||||||
@ -1415,9 +1418,9 @@ const
|
|||||||
COMMANDMAP: array[TDBGState] of TDBGCommands = (
|
COMMANDMAP: array[TDBGState] of TDBGCommands = (
|
||||||
{dsNone } [],
|
{dsNone } [],
|
||||||
{dsIdle } [dcEnvironment],
|
{dsIdle } [dcEnvironment],
|
||||||
{dsStop } [dcRun, dcStepOver, dcStepInto, dcRunTo, dcJumpto, dcBreak, dcWatch,
|
{dsStop } [dcRun, dcStepOver, dcStepInto, dcStepOut, dcRunTo, dcJumpto, dcBreak, dcWatch,
|
||||||
dcEvaluate, dcEnvironment],
|
dcEvaluate, dcEnvironment],
|
||||||
{dsPause} [dcRun, dcStop, dcStepOver, dcStepInto, dcRunTo, dcJumpto, dcBreak,
|
{dsPause} [dcRun, dcStop, dcStepOver, dcStepInto, dcStepOut, dcRunTo, dcJumpto, dcBreak,
|
||||||
dcWatch, dcLocal, dcEvaluate, dcModify, dcEnvironment, dcSetStackFrame,
|
dcWatch, dcLocal, dcEvaluate, dcModify, dcEnvironment, dcSetStackFrame,
|
||||||
dcDisassemble],
|
dcDisassemble],
|
||||||
{dsInit } [],
|
{dsInit } [],
|
||||||
@ -1894,6 +1897,12 @@ begin
|
|||||||
DebugLn('TDebugger.StepInto Class=',ClassName,' failed.');
|
DebugLn('TDebugger.StepInto Class=',ClassName,' failed.');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TDebugger.StepOut;
|
||||||
|
begin
|
||||||
|
if ReqCmd(dcStepOut, []) then exit;
|
||||||
|
DebugLn('TDebugger.StepOut Class=', ClassName, ' failed.');
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TDebugger.StepOver;
|
procedure TDebugger.StepOver;
|
||||||
begin
|
begin
|
||||||
if ReqCmd(dcStepOver, []) then exit;
|
if ReqCmd(dcStepOver, []) then exit;
|
||||||
|
|||||||
@ -143,6 +143,7 @@ type
|
|||||||
function GDBStop: Boolean;
|
function GDBStop: Boolean;
|
||||||
function GDBStepOver: Boolean;
|
function GDBStepOver: Boolean;
|
||||||
function GDBStepInto: Boolean;
|
function GDBStepInto: Boolean;
|
||||||
|
function GDBStepOut: Boolean;
|
||||||
function GDBRunTo(const ASource: String; const ALine: Integer): Boolean;
|
function GDBRunTo(const ASource: String; const ALine: Integer): Boolean;
|
||||||
function GDBJumpTo(const ASource: String; const ALine: Integer): Boolean;
|
function GDBJumpTo(const ASource: String; const ALine: Integer): Boolean;
|
||||||
function GDBDisassemble(AAddr: TDbgPtr; ABackward: Boolean; out ANextAddr: TDbgPtr;
|
function GDBDisassemble(AAddr: TDbgPtr; ABackward: Boolean; out ANextAddr: TDbgPtr;
|
||||||
@ -2791,6 +2792,22 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TGDBMIDebugger.GDBStepOut: Boolean;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
case State of
|
||||||
|
dsStop: begin
|
||||||
|
Result := StartDebugging('');
|
||||||
|
end;
|
||||||
|
dsPause: begin
|
||||||
|
Result := ExecuteCommand('-exec-finish', [cfExternal]);
|
||||||
|
end;
|
||||||
|
dsIdle: begin
|
||||||
|
DebugLn('[WARNING] Debugger: Unable to step out in idle state');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TGDBMIDebugger.GDBStepOver: Boolean;
|
function TGDBMIDebugger.GDBStepOver: Boolean;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
@ -3068,7 +3085,7 @@ end;
|
|||||||
|
|
||||||
function TGDBMIDebugger.GetSupportedCommands: TDBGCommands;
|
function TGDBMIDebugger.GetSupportedCommands: TDBGCommands;
|
||||||
begin
|
begin
|
||||||
Result := [dcRun, dcPause, dcStop, dcStepOver, dcStepInto, dcRunTo, dcJumpto,
|
Result := [dcRun, dcPause, dcStop, dcStepOver, dcStepInto, dcStepOut, dcRunTo, dcJumpto,
|
||||||
dcBreak, dcWatch, dcLocal, dcEvaluate, dcModify, dcEnvironment,
|
dcBreak, dcWatch, dcLocal, dcEvaluate, dcModify, dcEnvironment,
|
||||||
dcSetStackFrame, dcDisassemble];
|
dcSetStackFrame, dcDisassemble];
|
||||||
end;
|
end;
|
||||||
@ -3782,6 +3799,7 @@ begin
|
|||||||
dcStop: Result := GDBStop;
|
dcStop: Result := GDBStop;
|
||||||
dcStepOver: Result := GDBStepOver;
|
dcStepOver: Result := GDBStepOver;
|
||||||
dcStepInto: Result := GDBStepInto;
|
dcStepInto: Result := GDBStepInto;
|
||||||
|
dcStepOut: Result := GDBStepOut;
|
||||||
dcRunTo: Result := GDBRunTo(String(AParams[0].VAnsiString), AParams[1].VInteger);
|
dcRunTo: Result := GDBRunTo(String(AParams[0].VAnsiString), AParams[1].VInteger);
|
||||||
dcJumpto: Result := GDBJumpTo(String(AParams[0].VAnsiString), AParams[1].VInteger);
|
dcJumpto: Result := GDBJumpTo(String(AParams[0].VAnsiString), AParams[1].VInteger);
|
||||||
dcEvaluate: Result := GDBEvaluate(String(AParams[0].VAnsiString), String(AParams[1].VPointer^),TGDBType(AParams[2].VPointer^));
|
dcEvaluate: Result := GDBEvaluate(String(AParams[0].VAnsiString), String(AParams[1].VPointer^),TGDBType(AParams[2].VPointer^));
|
||||||
|
|||||||
@ -105,6 +105,7 @@ type
|
|||||||
function DoShowExecutionPoint: TModalResult; virtual; abstract;
|
function DoShowExecutionPoint: TModalResult; virtual; abstract;
|
||||||
function DoStepIntoProject: TModalResult; virtual; abstract;
|
function DoStepIntoProject: TModalResult; virtual; abstract;
|
||||||
function DoStepOverProject: TModalResult; virtual; abstract;
|
function DoStepOverProject: TModalResult; virtual; abstract;
|
||||||
|
function DoStepOutProject: TModalResult; virtual; abstract;
|
||||||
function DoRunToCursor: TModalResult; virtual; abstract;
|
function DoRunToCursor: TModalResult; virtual; abstract;
|
||||||
function DoStopProject: TModalResult; virtual; abstract;
|
function DoStopProject: TModalResult; virtual; abstract;
|
||||||
procedure DoToggleCallStack; virtual; abstract;
|
procedure DoToggleCallStack; virtual; abstract;
|
||||||
|
|||||||
@ -163,6 +163,7 @@ type
|
|||||||
function DoShowExecutionPoint: TModalResult; override;
|
function DoShowExecutionPoint: TModalResult; override;
|
||||||
function DoStepIntoProject: TModalResult; override;
|
function DoStepIntoProject: TModalResult; override;
|
||||||
function DoStepOverProject: TModalResult; override;
|
function DoStepOverProject: TModalResult; override;
|
||||||
|
function DoStepOutProject: TModalResult; override;
|
||||||
function DoRunToCursor: TModalResult; override;
|
function DoRunToCursor: TModalResult; override;
|
||||||
function DoStopProject: TModalResult; override;
|
function DoStopProject: TModalResult; override;
|
||||||
procedure DoToggleCallStack; override;
|
procedure DoToggleCallStack; override;
|
||||||
@ -1986,6 +1987,9 @@ begin
|
|||||||
StepOverSpeedButton.Enabled := DebuggerInvalid or
|
StepOverSpeedButton.Enabled := DebuggerInvalid or
|
||||||
(dcStepOver in FDebugger.Commands) or (FDebugger.State = dsIdle);
|
(dcStepOver in FDebugger.Commands) or (FDebugger.State = dsIdle);
|
||||||
itmRunMenuStepOver.Enabled := StepOverSpeedButton.Enabled;
|
itmRunMenuStepOver.Enabled := StepOverSpeedButton.Enabled;
|
||||||
|
StepOutSpeedButton.Enabled := DebuggerInvalid or
|
||||||
|
(dcStepOut in FDebugger.Commands) or (FDebugger.State = dsIdle);
|
||||||
|
itmRunMenuStepOut.Enabled := StepOutSpeedButton.Enabled;
|
||||||
|
|
||||||
itmRunMenuRunToCursor.Enabled := DebuggerInvalid
|
itmRunMenuRunToCursor.Enabled := DebuggerInvalid
|
||||||
or (dcRunTo in FDebugger.Commands);
|
or (dcRunTo in FDebugger.Commands);
|
||||||
@ -2347,6 +2351,20 @@ begin
|
|||||||
Result := mrOk;
|
Result := mrOk;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TDebugManager.DoStepOutProject: TModalResult;
|
||||||
|
begin
|
||||||
|
if (MainIDE.DoInitProjectRun <> mrOK)
|
||||||
|
or (MainIDE.ToolStatus <> itDebugger)
|
||||||
|
or (FDebugger = nil) or Destroying
|
||||||
|
then begin
|
||||||
|
Result := mrAbort;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
FDebugger.StepOut;
|
||||||
|
Result := mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
function TDebugManager.DoStopProject: TModalResult;
|
function TDebugManager.DoStopProject: TModalResult;
|
||||||
begin
|
begin
|
||||||
Result := mrCancel;
|
Result := mrCancel;
|
||||||
@ -2375,6 +2393,7 @@ begin
|
|||||||
ecPause: DoPauseProject;
|
ecPause: DoPauseProject;
|
||||||
ecStepInto: DoStepIntoProject;
|
ecStepInto: DoStepIntoProject;
|
||||||
ecStepOver: DoStepOverProject;
|
ecStepOver: DoStepOverProject;
|
||||||
|
ecStepOut: DoStepOutProject;
|
||||||
ecRunToCursor: DoRunToCursor;
|
ecRunToCursor: DoRunToCursor;
|
||||||
ecStopProgram: DoStopProject;
|
ecStopProgram: DoStopProject;
|
||||||
ecResetDebugger: ResetDebugger;
|
ecResetDebugger: ResetDebugger;
|
||||||
|
|||||||
@ -538,6 +538,7 @@ begin
|
|||||||
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[]);
|
ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[]);
|
||||||
ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[]);
|
ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[]);
|
||||||
|
ecStepOut: SetResult(VK_F8,[ssShift],VK_UNKNOWN,[]);
|
||||||
ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[]);
|
ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[]);
|
||||||
ecStopProgram: SetResult(VK_F2,[SSCtrl],VK_UNKNOWN,[]);
|
ecStopProgram: SetResult(VK_F2,[SSCtrl],VK_UNKNOWN,[]);
|
||||||
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
@ -959,6 +960,7 @@ begin
|
|||||||
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
|
ecStepOut: SetResult(VK_F8,[ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
ecStopProgram: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecStopProgram: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
@ -1562,6 +1564,7 @@ begin
|
|||||||
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
ecStepInto: SetResult(VK_R,[ssMeta,ssAlt],VK_UNKNOWN,[]);
|
ecStepInto: SetResult(VK_R,[ssMeta,ssAlt],VK_UNKNOWN,[]);
|
||||||
ecStepOver: SetResult(VK_R,[ssMeta,ssShift],VK_UNKNOWN,[]);
|
ecStepOver: SetResult(VK_R,[ssMeta,ssShift],VK_UNKNOWN,[]);
|
||||||
|
ecStepOut: SetResult(VK_T,[ssMeta,ssShift],VK_UNKNOWN,[]);
|
||||||
ecRunToCursor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecRunToCursor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
ecStopProgram: SetResult(VK_RETURN,[ssShift,ssMeta],VK_UNKNOWN,[]);
|
ecStopProgram: SetResult(VK_RETURN,[ssShift,ssMeta],VK_UNKNOWN,[]);
|
||||||
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
@ -1725,6 +1728,7 @@ begin
|
|||||||
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
ecStepInto: SetResult(VK_F7,[],VK_F7,[ssMeta]);
|
ecStepInto: SetResult(VK_F7,[],VK_F7,[ssMeta]);
|
||||||
ecStepOver: SetResult(VK_F8,[],VK_F8,[ssMeta]);
|
ecStepOver: SetResult(VK_F8,[],VK_F8,[ssMeta]);
|
||||||
|
ecStepOut: SetResult(VK_F8,[],VK_F8,[ssShift,ssMeta]);
|
||||||
ecRunToCursor: SetResult(VK_F4,[],VK_F4,[ssMeta]);
|
ecRunToCursor: SetResult(VK_F4,[],VK_F4,[ssMeta]);
|
||||||
ecStopProgram: SetResult(VK_F2,[ssCtrl],VK_F2,[ssCtrl,ssMeta]);
|
ecStopProgram: SetResult(VK_F2,[ssCtrl],VK_F2,[ssCtrl,ssMeta]);
|
||||||
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
@ -2078,6 +2082,7 @@ begin
|
|||||||
ecShowExecutionPoint : Result:= srkmecShowExecutionPoint;
|
ecShowExecutionPoint : Result:= srkmecShowExecutionPoint;
|
||||||
ecStepInto : Result:= lisMenuStepInto;
|
ecStepInto : Result:= lisMenuStepInto;
|
||||||
ecStepOver : Result:= lisMenuStepOver;
|
ecStepOver : Result:= lisMenuStepOver;
|
||||||
|
ecStepOut : Result:= lisMenuStepOut;
|
||||||
ecRunToCursor : Result:= lisMenuRunToCursor;
|
ecRunToCursor : Result:= lisMenuRunToCursor;
|
||||||
ecStopProgram : Result:= srkmecStopProgram;
|
ecStopProgram : Result:= srkmecStopProgram;
|
||||||
ecResetDebugger : Result:= srkmecResetDebugger;
|
ecResetDebugger : Result:= srkmecResetDebugger;
|
||||||
@ -2769,6 +2774,7 @@ begin
|
|||||||
AddDefault(C, 'Show execution point', lisMenuShowExecutionPoint, ecShowExecutionPoint);
|
AddDefault(C, 'Show execution point', lisMenuShowExecutionPoint, ecShowExecutionPoint);
|
||||||
AddDefault(C, 'Step into', lisMenuStepInto, ecStepInto);
|
AddDefault(C, 'Step into', lisMenuStepInto, ecStepInto);
|
||||||
AddDefault(C, 'Step over', lisMenuStepOver, ecStepOver);
|
AddDefault(C, 'Step over', lisMenuStepOver, ecStepOver);
|
||||||
|
AddDefault(C, 'Step out', lisMenuStepOut, ecStepOut);
|
||||||
AddDefault(C, 'Run to cursor', lisMenuRunToCursor, ecRunToCursor);
|
AddDefault(C, 'Run to cursor', lisMenuRunToCursor, ecRunToCursor);
|
||||||
AddDefault(C, 'Stop program', lisKMStopProgram, ecStopProgram);
|
AddDefault(C, 'Stop program', lisKMStopProgram, ecStopProgram);
|
||||||
AddDefault(C, 'Reset debugger', lisMenuResetDebugger, ecResetDebugger);
|
AddDefault(C, 'Reset debugger', lisMenuResetDebugger, ecResetDebugger);
|
||||||
|
|||||||
@ -334,6 +334,7 @@ resourcestring
|
|||||||
lisMenuShowExecutionPoint = 'Show execution point';
|
lisMenuShowExecutionPoint = 'Show execution point';
|
||||||
lisMenuStepInto = 'Step into';
|
lisMenuStepInto = 'Step into';
|
||||||
lisMenuStepOver = 'Step over';
|
lisMenuStepOver = 'Step over';
|
||||||
|
lisMenuStepOut = 'Step out';
|
||||||
lisMenuRunToCursor = 'Run to cursor';
|
lisMenuRunToCursor = 'Run to cursor';
|
||||||
lisKMStopProgram = 'Stop program';
|
lisKMStopProgram = 'Stop program';
|
||||||
lisMenuStop = 'Stop';
|
lisMenuStop = 'Stop';
|
||||||
@ -815,7 +816,8 @@ resourcestring
|
|||||||
lisHintStop = 'Stop';
|
lisHintStop = 'Stop';
|
||||||
lisHintStepInto = 'Step Into';
|
lisHintStepInto = 'Step Into';
|
||||||
lisHintStepOver = 'Step Over';
|
lisHintStepOver = 'Step Over';
|
||||||
|
lisHintStepOut = 'Run until function returns';
|
||||||
|
|
||||||
lisGPLNotice =
|
lisGPLNotice =
|
||||||
'<description>'
|
'<description>'
|
||||||
+'%s'
|
+'%s'
|
||||||
|
|||||||
@ -296,6 +296,7 @@ type
|
|||||||
procedure mnuShowExecutionPointClicked(Sender: TObject);
|
procedure mnuShowExecutionPointClicked(Sender: TObject);
|
||||||
procedure mnuStepIntoProjectClicked(Sender: TObject);
|
procedure mnuStepIntoProjectClicked(Sender: TObject);
|
||||||
procedure mnuStepOverProjectClicked(Sender: TObject);
|
procedure mnuStepOverProjectClicked(Sender: TObject);
|
||||||
|
procedure mnuStepOutProjectClicked(Sender: TObject);
|
||||||
procedure mnuRunToCursorProjectClicked(Sender: TObject);
|
procedure mnuRunToCursorProjectClicked(Sender: TObject);
|
||||||
procedure mnuStopProjectClicked(Sender: TObject);
|
procedure mnuStopProjectClicked(Sender: TObject);
|
||||||
procedure mnuRunParametersClicked(Sender: TObject);
|
procedure mnuRunParametersClicked(Sender: TObject);
|
||||||
@ -1757,6 +1758,7 @@ begin
|
|||||||
MainIDEBar.StopSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StopSpeedButton' , 'menu_stop' , @mnuStopProjectClicked, lisHintStop);
|
MainIDEBar.StopSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StopSpeedButton' , 'menu_stop' , @mnuStopProjectClicked, lisHintStop);
|
||||||
MainIDEBar.StepIntoSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepIntoSpeedButton', 'menu_stepinto' , @mnuStepIntoProjectClicked, lisHintStepInto);
|
MainIDEBar.StepIntoSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepIntoSpeedButton', 'menu_stepinto' , @mnuStepIntoProjectClicked, lisHintStepInto);
|
||||||
MainIDEBar.StepOverSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepOverpeedButton' , 'menu_stepover' , @mnuStepOverProjectClicked, lisHintStepOver);
|
MainIDEBar.StepOverSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepOverpeedButton' , 'menu_stepover' , @mnuStepOverProjectClicked, lisHintStepOver);
|
||||||
|
MainIDEBar.StepOutSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepOutSpeedButton' , 'menu_stepout' , @mnuStepOutProjectClicked, lisHintStepOut);
|
||||||
|
|
||||||
MainIDEBar.CreatePopupMenus(OwningComponent);
|
MainIDEBar.CreatePopupMenus(OwningComponent);
|
||||||
|
|
||||||
@ -2418,6 +2420,7 @@ begin
|
|||||||
itmRunMenuShowExecutionPoint.OnClick := @mnuShowExecutionPointClicked;
|
itmRunMenuShowExecutionPoint.OnClick := @mnuShowExecutionPointClicked;
|
||||||
itmRunMenuStepInto.OnClick := @mnuStepIntoProjectClicked;
|
itmRunMenuStepInto.OnClick := @mnuStepIntoProjectClicked;
|
||||||
itmRunMenuStepOver.OnClick := @mnuStepOverProjectClicked;
|
itmRunMenuStepOver.OnClick := @mnuStepOverProjectClicked;
|
||||||
|
itmRunMenuStepOut.OnClick := @mnuStepOutProjectClicked;
|
||||||
itmRunMenuRunToCursor.OnClick := @mnuRunToCursorProjectClicked;
|
itmRunMenuRunToCursor.OnClick := @mnuRunToCursorProjectClicked;
|
||||||
itmRunMenuStop.Enabled := False;
|
itmRunMenuStop.Enabled := False;
|
||||||
itmRunMenuStop.OnClick := @mnuStopProjectClicked;
|
itmRunMenuStop.OnClick := @mnuStopProjectClicked;
|
||||||
@ -3862,6 +3865,11 @@ begin
|
|||||||
DebugBoss.DoStepOverProject;
|
DebugBoss.DoStepOverProject;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMainIDE.mnuStepOutProjectClicked(Sender: TObject);
|
||||||
|
begin
|
||||||
|
DebugBoss.DoStepOutProject;
|
||||||
|
end;
|
||||||
|
|
||||||
Procedure TMainIDE.mnuRunToCursorProjectClicked(Sender: TObject);
|
Procedure TMainIDE.mnuRunToCursorProjectClicked(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DebugBoss.DoRunToCursor;
|
DebugBoss.DoRunToCursor;
|
||||||
|
|||||||
@ -71,6 +71,7 @@ type
|
|||||||
StopSpeedButton : TToolButton;
|
StopSpeedButton : TToolButton;
|
||||||
StepIntoSpeedButton : TToolButton;
|
StepIntoSpeedButton : TToolButton;
|
||||||
StepOverSpeedButton : TToolButton;
|
StepOverSpeedButton : TToolButton;
|
||||||
|
StepOutSpeedButton : TToolButton;
|
||||||
|
|
||||||
NewUnitFormPopupMenu : TPopupMenu;
|
NewUnitFormPopupMenu : TPopupMenu;
|
||||||
NewUFSetDefaultMenuItem: TMenuItem;
|
NewUFSetDefaultMenuItem: TMenuItem;
|
||||||
@ -255,6 +256,7 @@ type
|
|||||||
itmRunMenuShowExecutionPoint: TIDEMenuCommand;
|
itmRunMenuShowExecutionPoint: TIDEMenuCommand;
|
||||||
itmRunMenuStepInto: TIDEMenuCommand;
|
itmRunMenuStepInto: TIDEMenuCommand;
|
||||||
itmRunMenuStepOver: TIDEMenuCommand;
|
itmRunMenuStepOver: TIDEMenuCommand;
|
||||||
|
itmRunMenuStepOut: TIDEMenuCommand;
|
||||||
itmRunMenuRunToCursor: TIDEMenuCommand;
|
itmRunMenuRunToCursor: TIDEMenuCommand;
|
||||||
itmRunMenuStop: TIDEMenuCommand;
|
itmRunMenuStop: TIDEMenuCommand;
|
||||||
itmRunMenuRunParameters: TIDEMenuCommand;
|
itmRunMenuRunParameters: TIDEMenuCommand;
|
||||||
|
|||||||
@ -655,6 +655,7 @@ begin
|
|||||||
CreateMenuItem(ParentMI,itmRunMenuShowExecutionPoint,'itmRunMenuShowExecutionPoint',lisMenuShowExecutionPoint,'debugger_show_execution_point');
|
CreateMenuItem(ParentMI,itmRunMenuShowExecutionPoint,'itmRunMenuShowExecutionPoint',lisMenuShowExecutionPoint,'debugger_show_execution_point');
|
||||||
CreateMenuItem(ParentMI,itmRunMenuStepInto,'itmRunMenuStepInto',lisMenuStepInto,'menu_stepinto');
|
CreateMenuItem(ParentMI,itmRunMenuStepInto,'itmRunMenuStepInto',lisMenuStepInto,'menu_stepinto');
|
||||||
CreateMenuItem(ParentMI,itmRunMenuStepOver,'itmRunMenuStepOver',lisMenuStepOver,'menu_stepover');
|
CreateMenuItem(ParentMI,itmRunMenuStepOver,'itmRunMenuStepOver',lisMenuStepOver,'menu_stepover');
|
||||||
|
CreateMenuItem(ParentMI,itmRunMenuStepOut,'itmRunMenuStepOut',lisMenuStepOut,'menu_stepout');
|
||||||
CreateMenuItem(ParentMI,itmRunMenuRunToCursor,'itmRunMenuRunToCursor',lisMenuRunToCursor,'menu_run_cursor');
|
CreateMenuItem(ParentMI,itmRunMenuRunToCursor,'itmRunMenuRunToCursor',lisMenuRunToCursor,'menu_run_cursor');
|
||||||
CreateMenuItem(ParentMI,itmRunMenuStop,'itmRunMenuStop',lisMenuStop,'menu_stop');
|
CreateMenuItem(ParentMI,itmRunMenuStop,'itmRunMenuStop',lisMenuStop,'menu_stop');
|
||||||
CreateMenuItem(ParentMI,itmRunMenuRunParameters,'itmRunMenuRunParameters',lisMenuRunParameters, 'menu_run_parameters');
|
CreateMenuItem(ParentMI,itmRunMenuRunParameters,'itmRunMenuRunParameters',lisMenuRunParameters, 'menu_run_parameters');
|
||||||
@ -952,6 +953,7 @@ begin
|
|||||||
itmRunMenuPause.Command:=GetCommand(ecPause);
|
itmRunMenuPause.Command:=GetCommand(ecPause);
|
||||||
itmRunMenuStepInto.Command:=GetCommand(ecStepInto);
|
itmRunMenuStepInto.Command:=GetCommand(ecStepInto);
|
||||||
itmRunMenuStepOver.Command:=GetCommand(ecStepOver);
|
itmRunMenuStepOver.Command:=GetCommand(ecStepOver);
|
||||||
|
itmRunMenuStepOut.Command:=GetCommand(ecStepOut);
|
||||||
itmRunMenuRunToCursor.Command:=GetCommand(ecRunToCursor);
|
itmRunMenuRunToCursor.Command:=GetCommand(ecRunToCursor);
|
||||||
itmRunMenuStop.Command:=GetCommand(ecStopProgram);
|
itmRunMenuStop.Command:=GetCommand(ecStopProgram);
|
||||||
itmRunMenuResetDebugger.Command:=GetCommand(ecResetDebugger);
|
itmRunMenuResetDebugger.Command:=GetCommand(ecResetDebugger);
|
||||||
|
|||||||
@ -232,6 +232,7 @@ const
|
|||||||
ecEvaluate = ecFirstLazarus + 416;
|
ecEvaluate = ecFirstLazarus + 416;
|
||||||
ecAddWatch = ecFirstLazarus + 417;
|
ecAddWatch = ecFirstLazarus + 417;
|
||||||
ecShowExecutionPoint = ecFirstLazarus + 418;
|
ecShowExecutionPoint = ecFirstLazarus + 418;
|
||||||
|
ecStepOut = ecFirstLazarus + 419;
|
||||||
|
|
||||||
// project menu
|
// project menu
|
||||||
ecNewProject = ecFirstLazarus + 500;
|
ecNewProject = ecFirstLazarus + 500;
|
||||||
|
|||||||
@ -7607,6 +7607,32 @@ LazarusResources.Add('menu_stepover','PNG',[
|
|||||||
+#174'<'#155#254#141#177'&0E'#184'l'#157#227#249#233'$'#166#167#167#30#221#198
|
+#174'<'#155#254#141#177'&0E'#184'l'#157#227#249#233'$'#166#167#167#30#221#198
|
||||||
+#255#229#235'7>oE;>'#0#0#0#0'IEND'#174'B`'#130
|
+#255#229#235'7>oE;>'#0#0#0#0'IEND'#174'B`'#130
|
||||||
]);
|
]);
|
||||||
|
LazarusResources.Add('menu_stepout','PNG',[
|
||||||
|
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
||||||
|
+#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167
|
||||||
|
+#147#0#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#0#7'tIME'#7#218#2
|
||||||
|
+#14#2#6#28#164#177#158#29#0#0#1#242'IDAT8'#203#149#147';kTA'#24#134#159#153
|
||||||
|
+'9'#231#236'& (QBP'#17#193'FD'#237#21#4#181#176#20'b%$'#193#206#31#144#248#11
|
||||||
|
+#20'1^~ED'#172#20','#188#20#137#196#152'tZx!'#130#149'A'#13'F'#179#168'dwg'
|
||||||
|
+#231#246'Yl'#142#187'k'#18#209#23#6'f'#134#247'}x?'#134'Qtiaa^'#248'Oe'#221
|
||||||
|
+#135#166'mr'#234#228#233#127#14#207'<'#157'F'#1#188'Xz">8'#154#173':>:B'#240
|
||||||
|
+#248#232'8s'#232#194#150#225#162#168#240#232#241#195'v'#3#235#26#248#224#177
|
||||||
|
+#174'A'#136#30#31#28'>:*'#213#190'M'#195#141#250#26#0#214#218#18#208'$'#4'G'
|
||||||
|
+#237'm'#193#185#225#243#0#196#24'i'#212'/n'#10'0'#198#252#9'h'#16#130#195#218
|
||||||
|
+'b'#131#233'o'#218#208'@$'#239'1L'#221#158'"'#198'H'#140#177#231'~lt'#140#162
|
||||||
|
+#168't'#0'-'#215#192'G'#135#170'V'#19' '#128#1#24#29#25#237#9#139#8'"'#130
|
||||||
|
+#214#186#183#193'rm'#233#139'Rz0W'#9#17#137'J)'#211'=J'#25','#149'R{'#223'j'
|
||||||
|
+#173#3'V'#127','#15#250#232#25#192#136#136'$!E'#173#140#185'~c'#18#17#217'0'
|
||||||
|
+#194#196#248#165#222#6#223#215'jT'#242#10'?'#243#207'jv'#241'^'#182#189#127
|
||||||
|
+#167':'#186#239'DZ7*'#239#189'*['#136#200#239#6#214'Z'#244#200#173'#'#226#130
|
||||||
|
+#197'G'#143'Ku='#255#238'A6'#253#250#174'>{e'#143'&'#165#148#146'x'#165'4'
|
||||||
|
+#229#210'Z#'#146':'#13'B'#240#4#237#240':'#195#232#12#163#29'3/'#239'3wg'#215
|
||||||
|
+'''}u['#14#244#1#9#168#150'#|]Y'#233#0#150'V'#222#179#127#232' &:B'#204#152
|
||||||
|
+'{5'#195#179'I'#251#205'^n'#237#136'!d)I'#17'B'#160'{'#4#163'U'#7'0'#127#211
|
||||||
|
+#15#28#159#200#223#28#216'}xh'#241#195'sf'#175'5k'#198#152#162#191#175#31'h'
|
||||||
|
+#255#149#238#23'('#165#148#194'Z'#219'6'#0#28#27#207'd'#239#199#225'Ukm'#21
|
||||||
|
+#200#215#127#170'*!['#233#23'Jg/'#196'4'#4#9#139#0#0#0#0'IEND'#174'B`'#130
|
||||||
|
]);
|
||||||
LazarusResources.Add('menu_stop','PNG',[
|
LazarusResources.Add('menu_stop','PNG',[
|
||||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
||||||
+#0#0#0#245'IDATx^'#197#147'AJ'#196'P'#16'D'#171#131'x'#7'='#134''''#152#149
|
+#0#0#0#245'IDATx^'#197#147'AJ'#196'P'#16'D'#171#131'x'#7'='#134''''#152#149
|
||||||
|
|||||||
@ -90,6 +90,7 @@ menu/menu_search_replace.png
|
|||||||
menu/menu_select_all.png
|
menu/menu_select_all.png
|
||||||
menu/menu_stepinto.png
|
menu/menu_stepinto.png
|
||||||
menu/menu_stepover.png
|
menu/menu_stepover.png
|
||||||
|
menu/menu_stepout.png
|
||||||
menu/menu_stop.png
|
menu/menu_stop.png
|
||||||
menu/menu_tool_check_lfm.png
|
menu/menu_tool_check_lfm.png
|
||||||
menu/menu_tool_dfm_to_lfm.png
|
menu/menu_tool_dfm_to_lfm.png
|
||||||
|
|||||||
BIN
images/menu/menu_stepout.png
Normal file
BIN
images/menu/menu_stepout.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 626 B |
Loading…
Reference in New Issue
Block a user