I have recently started using MATLAB without GUI by starting matlab with -nodesktop option and it is considerably faster.
However presently I have no way to debug a .m script in non gui mode. I have to open the default matlab editor every time I have to debug.Has anyone figured out a way to do it? Thanks in advance
I am using Ubuntu Linux, in case that helps.
You can get online help on using the debugger by clicking the Help button on the debugger toolbar. Clicking the Help button displays help for the debugger in the MATLAB® product Help browser. In command-line mode, you can get a brief description of the debugger commands by typing help at the debug prompt.
How would you start a debugger in MATLAB? Explanation: M-files are simple text files containing MATLAB programs. These can be used to run complex programs easily. In MATLAB, we can type edit to begin writing in Editor/Debugger mode.
To set breakpoints with the command line, dbstop
is the tool (plus dbclear
to clear breakpoints and dbstatus
to list them).
There are presently 17 different forms to dbstop
, which allow you to specify various combinations of:
Conditional to an arbitrary expression. For example,
dbstop in myFun.m at 224 if ~exist('x','var')
dbstop if error
)dbstop if error myFun.m:barErrorId
)dbstop if warning
) or specific warningNaN
or Inf
are encountered (dbstop if naninf
)See the documentation for dbstop
for details and good examples.
Also get used to dbcont
(or F5), dbstep
(or F10), dbquit
(Shift+F5), dbstep
(also dbstep in
, dbstep out
), dbstack
(to see where you are and how you got there). The keyboard shortcuts may be different outside of Windows.
Far less used, but still very useful are dbup
and dbdown
, which allow you to switch workspace context (memory stacks).
See the summary of functions and a list of examples and how-to pages in the MathWorks page on Debugging.
Related to the "db
" functions is checkcode
, which will check your code for possible problems before you even run it. This is a nice substitute for the red squiggly underlines that you would get in the MATLAB Editor.
Once you get a hang of dbstop
and it's syntax, you won't often need to insert a keyboard
into your code, but it's always an option.
Try placing the keyboard
command in your code to insert a breakpoint. When the keyboard
command is reached, MATLAB will drop into an interactive prompt that you can use to inspect variables. For example:
x = rand(10,10);
y = rand(10,5);
z = x * y;
keyboard; % you can interactively inspect x, y, z here
z = sort(z);
To leave keyboard mode, you can type dbquit
to exit the program, or return
to continue executing the program.
Another trick is to turn on dbstop if error
which will automatically drop you into an interactive prompt whenever your code crashes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With