To diagnose problems in your live scripts or functions, debug your code in the Live Editor. There are several ways to debug in the Live Editor:
Show output by removing semicolons.
Run to a specific line of code and pause using the button.
Step into functions and scripts while paused by using the button.
Add breakpoints to your file to enable pausing at specific lines when you run.
A simple way to determine where a problem occurs in your live script or function is to show output. To show the output for a line, remove the semi-colon from the end of that line. The Live Editor displays each output with the line of code that creates it, making it easy to determine where a problem occurs.
For example, suppose that you have a script called
randomdata.mlx
that plots a vector of random data and draws a
horizontal line on the plot at the mean.
To display the output of the rand
function at line 2, remove
the semi-colon at the end of the line. To display line numbers in the Live Editor if
they are not visible, go to the View tab and press the
Line Numbers button. MATLAB® displays the value of
r
.
Showing output is useful if you want to display the state of a single variable. To explore the state of all variables in the workspace, run your live script or function and then pause before running the specified line of code.
To run to a specified line of code and then pause, click the button to the left of the line. If the selected
line cannot be reached, MATLAB continues running until the end of the file is reached or a breakpoint
is encountered.
For example, click the button to the left of line 2 in
randomdata.mlx
. MATLAB runs randomdata.mlx
starting at line 1 and pauses
before running line 2.
When MATLAB pauses, the
Run button in the Live Editor tab
changes to a
Continue button. The Live Editor indicates the line at which
MATLAB is paused by highlighting the line in green. The highlighted line does
not run until after MATLAB resumes running.
It is a good practice to avoid modifying a file while MATLAB is paused. Changes that are made while MATLAB is paused do not run until after MATLAB finished running the code and the code is rerun.
To continue running the code, click the
Continue button. MATLAB continues running the file until it reaches the end of the file or a
breakpoint. You also can click the
button to the left of the line of code you want
to continue running to.
To continue running the code line-by-line, on the Live Editor
tab, click
Step. MATLAB executes the current line at which it is paused and the pauses at the
next line.
To view the value of a variable while MATLAB is paused, hover the mouse pointer over the variable. The current
value of the variable appears in a data tip. The data tip stays in view until you
move the pointer. To disable data tips, go to the View tab and
press the
Datatips button.
You also can view the value of a variable by typing the variable name in the
Command Window. For example, to see the value of the variable n
,
type n
and press Enter. The Command Window
displays the variable name and its value. To view all the variables in the current
workspace, use the Workspace browser.
To pause a program while it is running, go to the Live Editor
tab and click the
Pause button. MATLAB pauses at the next executable line, and the
Pause button changes to a
Continue button. To continue running, press the
Continue button.
Pausing is useful if you want to check on the progress of a long running program to ensure that it is running as expected.
Clicking the pause button can cause MATLAB to pause in a file outside your own program file. Pressing the
Continue button resumes running without changing the
results of the file.
After you identify a problem, end the debugging session by going to the
Live Editor tab and clicking
Stop. To avoid confusion, make sure to end your debugging
session every time you are done debugging. The Live Editor automatically ends the
debugging session when you save.
While debugging, you can step into called files, pausing at points where you want
to examine values. To step into a file, click the button directly to the left of the function you
want to step into. The Live Editor only displays the button if the line contains a
call to another function.
By default, the Live Editor only steps into user-defined functions and scripts. To enable stepping into MathWorks® functions as well, on the Home tab, in the Environment section, click Preferences. Then, select MATLAB > Editor/Debugger, and in the Debugging in the Live Editor section, clear Only show Step in button for user-defined functions.
After stepping in, clicking the button at the top of the file runs the rest of
the called function, leaves the called function, and then pauses.
When you step into a called function or file, the Live Editor displays the list of the functions MATLAB executed before pausing at the current line. The list is shown at the top of the file and displays the functions in order, starting on the left with the first called script or function, and ending on the right with the current script or function in which MATLAB is paused. This list is called the function call stack.
For each function in the function call stack, there is a corresponding workspace. Workspaces contain variables that you create within MATLAB or import from data files or other programs. Variables that you assign through the Command Window or create using scripts belong to the base workspace. Variables that you create in a function belong to their own function workspace.
To examine a variable during debugging, you must first select its workspace. The selected function in the function call stack indicates the current workspace. To select or change the workspace, click the function in the function call stack. MATLAB opens the function in the Live Editor and changes the current workspace to the workspace of the function.
Once the workspace is selected, you can view the values of the variables in it using the Workspace browser or as a data tip in the Live Editor.
If there are lines of code in your file that you want to pause at every time you run, add breakpoints at those lines. To add a breakpoint in the Live Editor, click the gray area to the left on an executable line where you want to set the breakpoint. For example, click the area next to line 3 in this code to add a breakpoint at that line.
When you run the file, MATLAB pauses at the line of code indicated by the breakpoint.
When you close and reopen a file, breakpoints are saved.
To clear a breakpoint, right-click the breakpoint and select Clear Breakpoint from the context menu. To clear all breakpoints in the file, select Clear All in File. To clear all breakpoints in all files, select Clear All.
Breakpoints clear automatically when you end a MATLAB session.
You can disable selected breakpoints so that your program temporarily ignores them and runs uninterrupted. For example, you might disable a breakpoint after you identify and correct a problem.
To disable a breakpoint, right-click it and select Disable Breakpoint from the context menu. The breakpoint becomes gray to indicate that it is disabled.
To reenable a breakpoint, right-click it and select Enable Breakpoint from the context menu. To enable or disable all breakpoints in the file, select Enable All Breakpoints in File or Disable All Breakpoints in File. These options are only available if there is at least one breakpoint to enable or disable.
You can add a condition to a breakpoint that tells MATLAB when to pause at the specified line. To add a condition,
right-click the breakpoint and select Set/Modify
Condition
. When the Editor dialog box opens, enter a condition
and click OK. A condition is any valid MATLAB expression that returns a logical scalar value. MATLAB evaluates the condition before running the line.
For example, suppose that you only want to pause in
randomdata.mlx
if the random generated data contains a
0
.
Add a breakpoint with the following condition at line 3:
any(r == 0)
When you run the file, MATLAB pauses at the specified line when the condition is met. For
example, in the randomdata
example, MATLAB pauses before running line 3 if any of the values in
r
are equal to 0
.