This is machine translation

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

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Debug a MATLAB Function in a Chart

Check MATLAB Functions for Syntax Errors

Before you can build a simulation application for a model, you must fix syntax errors. Follow these steps to check the MATLAB® function meanstats for syntax violations:

  1. Open the function meanstats inside the chart in the call_stats_function_stateflow model that you updated in Program a MATLAB Function in a Chart.

    The editor automatically checks your function code for errors and recommends corrections.

  2. In the Stateflow® Editor, select Code > C/C++ Code > Build Model.

    If there are no errors or warnings, the Builder window appears and reports success. Otherwise, it lists errors. For example, if you change the name of local function avg to a nonexistent local function aug in meanstats, errors appear in the Diagnostic Viewer.

  3. The diagnostic message provides details of the type of error and a link to the code where the error occurred. The diagnostic message also contains a link to a diagnostic report that provides links to your MATLAB functions and compile-time type information for the variables and expressions in these functions. If your model fails to build, this information simplifies finding sources of error messages and aids understanding of type propagation rules. For more information about this report, see MATLAB Function Reports (Simulink).

  4. In the diagnostic message, click the link after the function name meanstats to display the offending line of code.

    The offending line appears highlighted in the editor.

  5. Correct the error by changing aug back to avg and recompile. No errors are found and the compile completes successfully.

Run-Time Debugging for MATLAB Functions in Charts

You use simulation to test your MATLAB functions for run-time errors that are not detectable by Stateflow. When you simulate your model, your MATLAB functions undergo diagnostic tests for missing or undefined information and possible logical conflicts as described in Check MATLAB Functions for Syntax Errors. If no errors are found, the simulation of your model begins.

Follow these steps to simulate and debug the meanstats function during run-time conditions:

  1. In the function editor, click the dash (-) character in the left margin of this line:

    len = length(vals);

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

  2. Start simulation for 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. A small green arrow in the left margin indicates this pause.

  3. To advance execution to the next line, select Step.

    Notice that this line calls the local function avg. If you select Step here, execution advances past the execution of the local function avg. To track execution of the lines in the local function avg, select Step In instead.

  4. To advance execution to the first line of the called local function avg, select Step In.

    Once you are in the local function, you can advance through one line at a time with the Step tool. If the local function calls another local function, use the Step In tool to step into it. To continue through the remaining lines of the local function and go back to the line after the local function call, select Step Out.

  5. Select Step to execute the only line in avg.

    When avg finishes its execution, you see a green arrow pointing down under its last line.

  6. Select Step to return to the function meanstats.

    Execution advances to the line after the call to avg.

  7. To display the value of the variable len, place your pointer over the text len in the function editor for at least a second.

    The value of len appears adjacent to your pointer.

    You can display the value for any data in the MATLAB function in this way, no matter where it appears in the function. For example, you can display the values for the vector vals by placing your pointer over it as an argument to the function length, or as an argument in the function header.

    You can also report the values for MATLAB function data in the MATLAB Command Window during simulation. When you reach a breakpoint, the debug>> command prompt appears in the MATLAB Command Window (you might have to press Enter to see it). At this prompt, you can inspect data defined for the function by entering the name of the data, as shown in this example:

    debug>> len
    len =

    As another debugging alternative, you can display the execution result of a function line by omitting the terminating semicolon. If you do, execution results appear in the MATLAB Command Window during simulation.

  8. To leave the function until it is called again and the breakpoint is reached, select Continue.

    At any point in a function, you can advance through the execution of the remaining lines of the function with the Continue tool. If you are at the end of the function, selecting Step does the same thing.

  9. Click the breakpoint to remove it and select Quit Debugging to complete the simulation.

    In the model, the computed values of mean and stdev now appear in the Display blocks.

Check for Data Range Violations

To control data range checking, set Simulation range checking in the Diagnostics: Data Validity pane of the Model Configuration Parameters dialog box.

Specify a Range

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

  1. In the Model Explorer, select the MATLAB function input or output of interest.

    The Data properties dialog box opens in the Dialog pane of the Model Explorer.

  2. In the Data properties dialog box, click the General tab and enter a limit range, as described in Limit range properties.

Was this topic helpful?