MATLAB Answers

detect debug mode

38 views (last 30 days)
Ronan
Ronan on 13 Jul 2011
Commented: Adam Danz on 30 Aug 2020 at 22:58
is there a way to tell if your function has been called from the "k>>" debug prompt instead of the normal ">>" prompt?
Something like an "isdebug()" function??
Thanks
Ronan

  0 Comments

Sign in to comment.

Accepted Answer

Daniel Shub
Daniel Shub on 13 Jul 2011
I don't think there is a robust way to tell. For example, you can get the "k>>" prompt with a keyboard command and I have no idea how to tell if the keyboard command has been called.
If you just want to tell if you are at a standard break point you can probably check each item in dbstack against the breakpoints returned by dbstatus.

  1 Comment

Ronan
Ronan on 13 Jul 2011
Thanks Daniel
If there really is no builtin way then comparing the outputs of dbstack an dbstatus is a good suggestion. Can anyone foresee and problems with this??
R

Sign in to comment.

More Answers (2)

Jan
Jan on 13 Jul 2011
You can use this to determine, if Matlab is currently in debug mode:
feature('IsDebugMode')
This replies 1 in debug mode, 0 otherwise. This is not documented and can change with the Matlab version.

  3 Comments

Daniel Shub
Daniel Shub on 14 Jul 2011
I need to play around with the feature command more.
Ronan
Ronan on 14 Jul 2011
Thanks Jan.
Just what I was after.
Ronan
Adam Danz
Adam Danz on 30 Aug 2020 at 22:46
Unfortunately, this solution no longer seems to work (r2019b) unless the call to feature or system_dependent is invoked by "Evalulate Selection" (F9).
function test()
clc()
feature('IsDebugMode')
system_dependent('IsDebugMode')
end

Sign in to comment.


Julian
Julian on 9 Oct 2015
I also needed an answer to this question! I was pleased just now to find here on Answers that feature('IsDebugMode') does the trick. Before turning to Answers I was looking in the MATLAB help, and came up with this alternative:
try
dbup % try going up the stack frame, works if in debug mode
dbdown % back to where we started
isDebugMode = true;
catch ME
assert(strcmp(ME.identifier, 'MATLAB:dbOnlyInDebugMode'))
isDebugMode = false;
end
Although the undocumented feature() is much neater, this is an alternative if you want to stay on official MATLAB.

  1 Comment

Adam Danz
Adam Danz on 30 Aug 2020 at 22:58
This solution fails in r2019b (I haven't tested it in earlier versions).
Debug commands are only supported when stopped in debug mode so when they are executed from within a script/function as you step through it in debug mode, it will cause an error the same error as when it's invoked from outside of debug mode ('MATLAB:dbOnlyInDebugMode').

Sign in to comment.

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!