Debugger: Disable "run to cursor" when debugger is stopped. This command is limited to the current frame (function). It can not be used to start a project. (also disable dcJumpTo, dcStepOut)

git-svn-id: trunk@39042 -
This commit is contained in:
martin 2012-10-10 23:00:51 +00:00
parent 29954198f2
commit f3f7450f44
3 changed files with 17 additions and 5 deletions

View File

@ -2979,7 +2979,7 @@ const
{dsNone } [],
{dsIdle } [dcEnvironment],
{dsStop } [dcRun, dcStepOver, dcStepInto, dcStepOverInstr, dcStepIntoInstr,
dcStepOut, dcRunTo, dcJumpto, dcAttach, dcBreak, dcWatch, dcEvaluate, dcEnvironment,
dcAttach, dcBreak, dcWatch, dcEvaluate, dcEnvironment,
dcSendConsoleInput],
{dsPause} [dcRun, dcStop, dcStepOver, dcStepInto, dcStepOverInstr, dcStepIntoInstr,
dcStepOut, dcRunTo, dcJumpto, dcDetach, dcBreak, dcWatch, dcLocal, dcEvaluate, dcModify,

View File

@ -7369,7 +7369,7 @@ begin
Result := False;
case State of
dsStop: begin
Result := StartDebugging(ectRunTo, [ASource, ALine]);
Result := False;
end;
dsPause: begin
CancelBeforeRun;
@ -7520,7 +7520,7 @@ begin
Result := False;
case State of
dsStop: begin
Result := StartDebugging;
Result := False;
end;
dsPause: begin
CancelBeforeRun;

View File

@ -1818,8 +1818,8 @@ begin
and (dcStepOut in FDebugger.Commands) and (FDebugger.State = dsPause);
itmRunMenuStepOut.Enabled := StepOutSpeedButton.Enabled;
// Run to cursor
itmRunMenuRunToCursor.Enabled := CanRun and (not DebuggerIsValid
or (dcRunTo in FDebugger.Commands));
itmRunMenuRunToCursor.Enabled := CanRun and DebuggerIsValid
and (dcRunTo in FDebugger.Commands);
// Stop
itmRunMenuStop.Enabled := CanRun and DebuggerIsValid;
StopSpeedButton.Enabled := itmRunMenuStop.Enabled;
@ -2352,6 +2352,12 @@ end;
function TDebugManager.DoStepOutProject: TModalResult;
begin
if (FDebugger = nil) or not(dcRunTo in FDebugger.Commands)
then begin
Result := mrAbort;
Exit;
end;
if (MainIDE.DoInitProjectRun <> mrOK)
or (MainIDE.ToolStatus <> itDebugger)
or (FDebugger = nil) or Destroying
@ -2699,6 +2705,12 @@ begin
{$ifdef VerboseDebugger}
DebugLn('TDebugManager.DoRunToCursor A');
{$endif}
if (FDebugger = nil) or not(dcRunTo in FDebugger.Commands)
then begin
Result := mrAbort;
Exit;
end;
if (MainIDE.DoInitProjectRun <> mrOK)
or (MainIDE.ToolStatus <> itDebugger)
or (FDebugger = nil) or Destroying