A model-level debugger can also let you alter the values of signals and redirect program execution to force the model to reach a certain state at any point. This effect can be difficult to achieve by merely altering the inputs to the model. If you suspect a problem in one part of the model, you can probe it further without needing to leave the debugger to change the model or craft new input streams.
An important capability of a model-level debugger is to log signal values during a debugger run, and then trace them back to the original block(s) within the model in the simulator. This can help resolve unexpected behavior and let you make any desired changes in the simulator at the identified point in the model.
Cross development using a model-level debugger
Many source-level debuggers support "cross" debugging, where a program can be debugged on a separate target machine, using a network or other connection between the host (where the debugger is running) and the target (where some kind of small-footprint "agent" is running). This same capability is present in a model-level debugger that incorporates such a cross-debugger. By using the normal cross-compiler toolchain and target interfacing capabilities, together with an appropriate auto code-generator, you can directly cross-compile and run the auto-generated code on a supported platform while debugging at the model level from the host and observing the execution behavior of the target.