Main Content

Debug Simulation Using Signal Breakpoints

This example shows how to:

  • Pause simulation at a specified time.

  • View signal values in the block diagram using port value labels.

  • Pause simulation at points of interest using signal breakpoints.

  • Step through a time step block by block.

  • View the execution order in the block diagram.

You can also step through a simulation from the beginning. For an example that shows how to step a simulation from the start and configure options for stepping through time steps and stepping back, see Step Through Simulation.

Open and Configure Model

Open the model vdp, which implements the Van der Pol equation. For more information about the model, see Van der Pol Oscillator.

openExample("simulink_general/VanDerPolOscillatorExample",...
    supportingFile="vdp")

The model vdp.

You might run several simulations while analyzing and debugging your model. To save time by compiling the model only before the first simulation, enable fast restart. In the Simulink® Toolstrip, on the Simulation tab, click Fast Restart.

Specify Time to Pause Simulation

Suppose you know you need to analyze the behavior of your model around a certain time in the simulation. You can run the simulation without interruption up to the time you specify as the Pause Time. For this example, specify a pause time of 2 seconds.

In the Simulink Toolstrip, on the Debug tab, in the Breakpoints section, specify the Pause Time as 2. Then, to start the simulation, click Run.

Because this is the first simulation, the model compiles before starting the simulation. Then, the simulation pauses after the major time step that happens at a simulation time of 2.079 seconds. The status bar at the bottom of the Simulink Editor displays the current simulation time. Some solvers perform calculations to determine the time of the next major time step before the point in the simulation loop where the simulation pauses when you click Step Forward. In this case, the solver is ahead in simulation time relative to the block diagram. The software adds an asterisk to the simulation time to indicate that the solver has moved ahead in simulation time.

The status bar shows that the simulation time is 2.079 with an asterisk and the simulation is paused.

When you specify a pause time, the simulation does not necessarily pause at that exact time. The solver determines the time steps the simulation takes, and the simulation might not have a major time step at the exact time you specify. Instead, the simulation pauses at the end the first time step that occurs at or after the time that you specify.

View Signal Values in Block Diagram

Both before and during simulation, you can add and remove port value labels to view signal values for each time step in the block diagram. You can add and remove port value labels for individual signals and for a selection of multiple signals.

For this example, add port value labels for all signals. Click an empty area in the upper left of the canvas and drag to select everything in the block diagram. Then, on the Debug tab, in the Tools section, in the Port Values button group, click Show port value label on selected signal . The port value labels show no data yet until the first forward step in simulation after you add the port value labels.

The model vdp with port value labels on all signals.

Step Through Time Steps

While paused in simulation due to the pause time, you can use the Step Forward and Step Back buttons to step the simulation through major time steps. Before you can step back, you must enable stepping back. You can also configure the number of major time steps to advance the simulation each time you click Step Forward or Step Back. For more information, see Step Through Simulation.

Click Step Forward. The simulation advances forward by one major time step. The port value labels update to display the signal values from the time step.

The model vdp with port value labels

You can continue advancing the simulation by clicking Step Forward. As the simulation progresses, you can observe the signal values using the port value labels and the Scope block in the model.

Set Breakpoint to Pause Simulation

You can use a signal breakpoint to pause the simulation each time a signal value satisfies the specified condition. When you use signal breakpoints, by default, the simulation pauses within the time step as soon as the condition is met, just after the block that produces the signal runs its output method to update the signal value.

You can control whether the simulation pauses within the time step when the condition is met or at the end of the time step in which the condition is met in the Breakpoints List. When you clear Pause within time step in the Breakpoints List, the simulation pauses at the end of the time step in which the condition is met. For more information, see Breakpoints List.

Suppose you want to investigate the behavior of the model when the value of the signal x1 is close to zero. Specify the condition for the breakpoint as >0. You could also configure the condition using the equal (=) relational operator. However, in that case, the breakpoint pauses the simulation only when the signal has exactly that value. The solver might choose time steps where the signal value is close to zero but not exactly zero. The signal breakpoint with the condition >0 pauses the simulation in the time step just after the signal value passes through zero.

To set the signal breakpoint:

  1. Select the signal x1.

  2. On the Debug tab, in the Breakpoints section, click Add Breakpoint.

  3. In the Add Breakpoint menu, select a relational operator to define the condition for the signal breakpoint. For this example, select greater than >.

  4. Specify the value for the breakpoint condition as 0 so that the simulation pauses when the value of the signal x1 becomes greater than zero.

  5. Click OK.

A red circle on the line for the signal x1 indicates that the signal has an enabled breakpoint.

The enabled breakpoint on the signal x1.

By default, during simulation, clicking a signal line adds or removes the port value label for the line. To add the port value label for the signal x1, click the signal line again. The port value label displays no data yet because when you remove a port value label, the software does not retain a history of signal values. The port value label updates to display the signal value the next time the simulation advances forward.

The signal x1 with the enabled breakpoint and port value label.

To advance the simulation until the breakpoint is hit, click Continue. The simulation pauses when the signal value becomes greater than zero. The port value label for the signal x1 shows the signal value that satisfied the breakpoint condition. The breakpoint icon has a red arrow on it that indicates that the breakpoint caused the simulation to pause. The block that produces the signal is highlighted green to indicate where the simulation is paused within the time step.

The model vdp paused on the breakpoint.

The left side of the status bar provides a detailed simulation status that indicates where the simulation is paused.

Detailed pause status on the left of the status bar.

When the simulation is paused on a breakpoint, you can open the Breakpoints List by clicking Open Breakpoints List near the middle of the status bar.

The green highlight in the Breakpoints List indicates that the simulation is paused on the breakpoint.

The Breakpoints List shows information about the breakpoint on the signal x1.

Step Block by Block

When the simulation is paused within a time step, the Step Over, Step In, and Step Out buttons become active, allowing you to step through the time step block by block. To step the simulation to the next block, click Step Over.

The simulation pauses just before executing the output method for the Outport block. The breakpoint no longer has the green arrow on it.

The model vdp in a simulation paused just before the Outport block executes.

The next time you click Step Over, the simulation pauses just before executing the output method for the Integrator block named x2. When you click Step Over once more, the Integrator block x2 executes its output method, the port value label updates to display the new signal value, and the simulation pauses just before executing the output method for the second Outport block.

The model vdp in a simulation paused just before the second Outport block executes its output method.

While paused within a time step, you can use some functions from the Simulink debugging programmatic interface to get additional information about the simulation. For example, you could use the probe function to view information about a specified block. Port value labels display only signal values that result from blocks running their output methods in a major time step. When you use functions from the Simulink debugging programmatic interface, the values displayed might be different because the functions show results from minor time steps as well.

As you continue to click Step Over to step through the time step, after the Scope block executes its output method, the simulation pauses with no blocks in the block diagram highlighted green. The status string on the left side of the status bar indicates that the simulation is paused on a hidden block. Because the block is hidden, no green highlight appears in the model. In this case, the hidden block is part of the logging implementation for the Outport blocks.

You can continue stepping the simulation one block at a time through multiple time steps. If you click Step Forward or Step Back, the simulation pauses between time steps, and the Step Over, Step In, and Step Out buttons are disabled. The Step Over, Step In, and Step Out buttons are enabled again when the simulation pauses on a breakpoint.

View Execution Order

When you step the simulation block by block, the blocks do not execute based on the layout of the block diagram. At the start of the simulation, the software determines the execution order for all tasks and blocks in the model. In each time step, the tasks and blocks execute according to the execution order.

To understand the order in which the blocks execute as you step, you can view the execution order in the block diagram. To display the execution order, on the Debug tab, in the Diagnostics section, click Information Overlays. Then, under Blocks, click Execution Order. The Execution Order viewer opens on the right of the Simulink Editor with the current task selected. The Execution Order viewer highlights and annotates the model to indicate the blocks involved in the current task and their order of execution.

The model vdp is annotated with the execution order. The Execution Order viewer is open on the right of the Simulink Editor.

The execution order highlighting overlays the green debugging highlight that indicates where the simulation is paused. You can continue to step through the simulation with the execution order highlighting in the model, or you can clear the execution order highlighting to see the debugging highlights. To clear the execution order highlighting, in the Execution Order viewer, click Clear Highlighting .

The Execution Order viewer does not show the execution order for any tasks, and the highlighting and annotations are cleared from the model. You can see the green debugging highlight again.

The model vdp without execution order highlighting. The Square block is highlighted green. The Execution Order viewer is on the right of the Simulink Editor.

To view the execution order again, in the Execution Order viewer, select the task you want to view.

End Simulation Debugging Session

When you are done analyzing and debugging your model, you can end the simulation debugging session in one of several ways, depending on what you plan to do next.

To continue the simulation from the current time point and retain the set of breakpoints configured in the model, disable all breakpoints.

  1. To open the Breakpoints List, on the Debug tab, click Breakpoints List.

  2. In the Breakpoints List, use the check boxes in the Enable column or the Enable or disable all breakpoints button to disable all the breakpoints.

  3. To resume the simulation, click Continue.

To continue the simulation from the current time point without retaining breakpoints, remove all breakpoints from the model.

  1. To clear all breakpoints in the model, on the Debug tab, click the Add Breakpoint button arrow and select Clear All Breakpoints.

  2. To resume simulation, click Continue.

To stop the simulation at the current time point, in the Simulink Toolstrip, on the Debug tab, click Stop.

See Also

|

Related Topics