Documentation

This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.

Debug a MATLAB Program

To debug your MATLAB® program graphically, use the Editor/Debugger. Alternatively, you can use debugging functions in the Command Window. Both methods are interchangeable.

Before you begin debugging, make sure that your program is saved and that the program and any files it calls exist on your search path or in the current folder.

  • If you run a file with unsaved changes from within the Editor, then the file is automatically saved before it runs.

  • If you run a file with unsaved changes from the Command Window, then MATLAB software runs the saved version of the file. Therefore, you do not see the results of your changes.

    Note:   Debugging using the graphical debugger is not supported in live scripts. For more information, see What Is a Live Script?

Set Breakpoint

Set breakpoints to pause the execution of a MATLAB file so you can examine the value or variables where you think a problem could be. You can set breakpoints using the Editor, using functions in the Command Window, or both.

There are three different types of breakpoints: standard, conditional, and error. To add a standard breakpoint in the Editor, click the breakpoint alley at an executable line where you want to set the breakpoint. The breakpoint alley is the narrow column on the left side of the Editor, to the right of the line number. Executable lines are indicated by a dash ( — ) in the breakpoint alley. For example, click the breakpoint alley next to line 2 in the code below to add a breakpoint at that line.

If an executable statement spans multiple lines, you can set a breakpoint at each line in that statement, even though the additional lines do not have a — (dash) in the breakpoint alley. For example, in this code. you can set a breakpoint at all four lines:

For more information on the different types of breakpoints, see Set Breakpoints.

Run File

After setting breakpoints, run the file from the Command Window or the Editor. Running the file produces these results:

  • The Run button changes to a Pause button.

  • The prompt in the Command Window changes to K>> indicating that MATLAB is in debug mode and that the keyboard is in control.

  • MATLAB pauses at the first breakpoint in the program. In the Editor, a green arrow just to the right of the breakpoint indicates the pause. The program does not execute the line where the pause occurs until it resumes running. For example, here the debugger pauses before the program executes x = ones(1,10);.

  • MATLAB displays the current workspace in the Function Call Stack, on the Editor tab in the Debug section.

    If you use debugging functions from the Command Window, use dbstack to view the Function Call Stack.

    Tip   To debug a program, run the entire file. MATLAB does not stop at breakpoints when you run an individual section.

For more information on using the Function Call Stack, see Select Workspace

Pause a Running File

To pause the execution of a program while it is running, go to the Editor tab and click the Pause button. MATLAB pauses execution at the next executable line, and the Pause button changes to a Continue button. To continue execution, 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.

    Note:   Clicking the pause button can cause MATLAB to pause in a file outside your own program file. Pressing the Continue button resumes normal execution without changing the results of the file.

Find and Fix a Problem

While your code is paused, you can view or change the values of variables, or you can modify the code.

View or Change Variable While Debugging

View the value of a variable while debugging to see whether a line of code has produced the expected result or not. To do this, position your mouse pointer to the left of the variable. The current value of the variable appears in a data tip.

The data tip stays in view until you move the pointer. If you have trouble getting the data tip to appear, click the line containing the variable, and then move the pointer next to the variable. For more information, see Examine Values While Debugging.

You can change the value of a variable while debugging to see if the new value produces expected results. With the program paused, assign a new value to the variable in the Command Window, Workspace browser, or Variables Editor. Then, continue running or stepping through the program.

For example, here MATLAB is paused inside a for loop where n = 2:

  • Type n = 7; in the command line to change the current value of n from 2 to 7.

  • Press Continue to run the next line of code.

MATLAB runs the code line x(n) = 2 * x(n-1); with n = 7.

Modify Section of Code While Debugging

You can modify a section of code while debugging to test possible fixes without having to save your changes. Usually, it is a good practice to modify a MATLAB file after you quit debugging, and then save the modification and run the file. Otherwise, you might get unexpected results. However, there are situations where you want to experiment during debugging.

To modify a program while debugging:

  1. While your code is paused, modify a part of the file that has not yet run.

    Breakpoints turn gray, indicating they are invalid.

  2. Select all the code after the line at which MATLAB is paused, right-click, and then select Evaluate Selection from the context menu.

After the code evaluation is complete, stop debugging and save or undo any changes made before continuing the debugging process.

Step Through File

While debugging, you can step through a MATLAB file, pausing at points where you want to examine values.

This table describes available debugging actions and the different methods you can use to execute them.

Description

Toolbar Button

Function Alternative

Continue execution of file until the line where the cursor is positioned. Also available on the context menu.

Run to Cursor

None

Execute the current line of the file.

Step

dbstep

Execute the current line of the file and, if the line is a call to another function, step into that function.

Step In

dbstep in

Resume execution of file until completion or until another breakpoint is encountered.

Continue

dbcont

After stepping in, run the rest of the called function or local function, leave the called function, and pause.

Step Out

dbstep out

Pause debug mode.

Pause

None

Exit debug mode.

Quit Debuggingdbquit

End Debugging Session

After you identify a problem, end the debugging session by going to the Editor tab and clicking Quit Debugging . You must end a debugging session if you want to change and save a file, or if you want to run other programs in MATLAB.

After you quit debugging, pause indicators in the Editor display no longer appear, and the normal >> prompt reappears in the Command Window in place of the K>>. You no longer can access the call stack.

If MATLAB software becomes nonresponsive when it stops at a breakpoint, press Ctrl+c to return to the MATLAB prompt.

Related Examples

Was this topic helpful?