Debugging a MATLAB Function Block

How Debugging Affects Simulation Speed

Debugging a MATLAB Function block slows simulation. For maximum simulation speed, disable debugging as described in Enabling and Disabling Debugging.

Enabling and Disabling Debugging

There are two levels of debugging available when using MATLAB Function blocks, model level debugging and block level debugging.

Disable debugging for an entire model by clearing the Enable debugging/animation check box in the Simulation Target pane in the Configuration Parameters dialog. Disable debugging for an individual MATLAB Function block by clicking Breakpoints > Enable Debugging in the MATLAB Function Block Editor. If Enable Debugging is unavailable, then the Simulation Target pane in the Configuration Parameters dialog is controlling debugging.

Debugging the Function in Simulation

In Create Model That Uses MATLAB Function Block, you created an example model with a MATLAB Function block that calculates the mean and standard deviation for a set of input values.

To debug the MATLAB Function in this model:

  1. Open the call_stats_block2 model and double-click its MATLAB Function block stats to open it for editing.

  2. In the MATLAB Function Block Editor, click the dash (-) character in the left margin of the line:

    len = length(vals);

    A small red ball appears in the margin of this line, indicating that you have set a breakpoint.

  3. Begin simulating the model:

    If you get any errors or warnings, make corrections before you try to simulate again. Otherwise, simulation pauses when execution reaches the breakpoint you set. This is indicated by a small green arrow in the left margin.

  4. Select Step to advance execution.

    The execution arrow advances to the next line of stats, which calls the local function avg.

  5. Select Step In.

    Execution advances to enter the local function avg. Once you are in a local function, you can use the Step or Step In commands to advance execution. If the local function calls another local function, use the Step In icon to enter it. If you want to execute the remaining lines of the local function, use Step Out.

  6. Select Step to execute the only line in the local function avg. When the local function avg finishes executing, a green arrow pointing down under its last line appears.

  7. Select Step again to return to the function stats.

    Execution advances to the line after the call to the local function avg.

  8. Step again twice to calculate the stdev and to execute the plot function.

    The plot function executes in MATLAB®:

    In the MATLAB Function Block Editor, a green arrow points down under the last line of code, indicating the completion of the function stats.

  9. Select Continue to continue execution of the model.

    The computed values of mean and stdev now appear in the Display blocks.

  10. In the MATLAB Function Block Editor, select Quit Debugging to stop simulation.

Watching Function Variables During Simulation

While you simulate a MATLAB Function block, you can use several tools to keep track of variable values in the function.

Watching with the Interactive Display

To display the value of a variable in the function of a MATLAB Function block during simulation:

  1. In the MATLAB Function Block Editor, place the mouse cursor over the variable text and observe the pop-up display.

    For example, to watch the variable len during simulation, place the mouse cursor over the text len in the code. The value of len appears adjacent to the cursor, as shown:

Watching with the Command Line Debugger

You can report the values for a function variable with the Command Line Debugger utility in the MATLAB window during simulation. When you reach a breakpoint, the Command Line Debugger prompt, debug>>, appears. At this prompt, you can see the value of a variable defined for the MATLAB Function block by entering its name:

debug>> stdev
 
	1.1180

debug>> 

The Command Line Debugger also provides the following commands during simulation:

CommandDescription

ctrl-c

Quit debugging and terminate simulation.

dbcont

Continue execution to next breakpoint.

dbquit

Quit debugging and terminate simulation.

dbstep [in|out]

Advance to next program step after a breakpoint is encountered. Step over or step into/out of a MATLAB local function.

help

Display help for command line debugging.

print <var>

Display the value of the variable var in the current scope. If var is a vector or matrix, you can also index into var. For example, var(1,2).

save

Saves all variables in the current scope to the specified file. Follows the syntax of the MATLAB save command. To retrieve variables to the MATLAB base workspace, use load command after simulation has been ended.

<var>

Equivalent to "print <var>" if variable is in the current scope.

who

Display the variables in the current scope.

whos

Display the size and class (type) of all variables in the current scope.

You can issue any other MATLAB command at the debug>> prompt, but the results are executed in the workspace of the MATLAB Function block. To issue a command in the MATLAB base workspace at the debug>> prompt, use the evalin command with the first argument 'base' followed by the second argument command string, for example, evalin('base','whos'). To return to the MATLAB base workspace, use the dbquit command.

Watching with MATLAB

You can display the execution result of a MATLAB Function block line by omitting the terminating semicolon. If you do, execution results for the line are echoed to the MATLAB window during simulation.

Display Size Limits

The MATLAB Function Block Editor does not display the contents of matrices that have more than two dimensions or more than 200 elements. For matrices that exceed these limits, the MATLAB Function Block Editor displays the shape and base type only.

Checking for Data Range Violations

When you enable debugging, MATLAB Function blocks automatically check input and output data for data range violations when the values enter or leave the blocks.

Specifying a Range

To specify a range for input and output data, follow these steps:

  1. In the Ports and Data Manager, select the input or output of interest.

    The data properties dialog box opens.

  2. In the data properties dialog box, select the General tab and enter a limit range, as described in Setting General Properties.

Debugging Tools

Use the following tools during a MATLAB Function block debugging session:

Tool ButtonDescriptionShortcut Key

Build

Access this tool from the Editor tab by selecting Build Model > Build.

Check for errors and build a simulation application (if no errors are found) for the model containing this MATLAB Function block.

Ctrl+B

Update Diagram

Access this tool from the Editor tab by selecting Build Model > Update Diagram.

Check for errors based on the latest changes you make to the MATLAB Function block.

Ctrl+D

Update Ports

Access this tool from the Editor tab by selecting Build Model > Update Ports.

Updates the ports of the MATLAB Function block with the latest changes made to the function argument and return values without closing the MATLAB Function Block Editor.

Ctrl+Shift+A

Run Model

Start simulation of the model containing the MATLAB Function block. If execution is paused at a breakpoint, continues debugging.

F5

Stop Model

Stop simulation of the model containing the MATLAB Function block. Alternatively, from the Editor tab, select Quit Debugging if execution is paused at a breakpoint.

Shift+F5

Set/Clear

Access this tool by selecting Breakpoints > Set/Clear.

Set a new breakpoint or clear an existing breakpoint for the selected line of code in the MATLAB Function block. The presence of the text cursor or highlighted text selects the line. A breakpoint indicator appears in the on the selected line.

Alternatively, click the hyphen character (-) next to the line number. A breakpoint indicator appears in place of the hyphen. Click the breakpoint indicator to clear the breakpoint.

F12

Clear All

Access this tool by selecting Breakpoints > Clear All.

Clear all existing breakpoints in the MATLAB Function block code.

None

Step

Step through the execution of the next line of code in the MATLAB Function block. This tool steps past function calls and does not enter called functions for line-by-line execution. You can use this tool only after execution has stopped at a breakpoint.

F10

Step In

Step through the execution of the next line of code in the MATLAB Function block. If the line calls a local function, step into the first line of the local function. You can use this tool only after execution has stopped at a breakpoint.

F11

Step Out

Step out of line-by-line execution of the current function or local function. If in a local function, the debugger continues to the line following the call to this local function. You can use this tool only after execution has stopped at a breakpoint.

Shift+F11

Continue

Continue debugging after a pause, such as stopping at a breakpoint. You can use this tool only after execution has stopped at a breakpoint.

F5

Quit Debugging

Exit debug mode. You can use this tool only after execution has stopped at a breakpoint.

Shift+F5

Was this topic helpful?