调试 MATLAB Function 模块
您可以使用 MATLAB Function 模块编辑器来调试 MATLAB Function 模块代码。MATLAB Function 模块编辑器包含一些与 MATLAB® 编辑器中相同的调试工具。要调试 MATLAB Function 模块代码,请设置至少一个断点并运行仿真。
调试示例函数
此示例使用您在用 MATLAB Function 模块在 Simulink 中实现 MATLAB 函数中创建的模型 call_stats_block2
。要调试此模型中的 MATLAB Function 模块代码,请执行以下操作:
打开
call_stats_block2
模型。双击 MATLAB Function 模块打开编辑器。在 MATLAB Function 模块编辑器中,点击以下行左侧的行号:
len = length(vals);
行号以红色突出显示,表示存在断点。
对模型进行仿真。
当执行到断点时,仿真将暂停。绿色箭头指向仿真暂停的位置。
在函数选项卡上,点击越过以继续执行。
执行前进到
stats
的下一行,它调用局部函数avg
。在函数选项卡上,点击步入。
执行前进到局部函数
avg
。进入局部函数后,您可以使用越过或步入命令继续执行。如果局部函数又调用另一个局部函数,可以使用步入进入。要执行局部函数的其余行,可以使用步出。点击越过以执行
avg
中的唯一一行代码。点击越过以返回到函数
stats
。执行前进到调用
avg
之后的代码行。点击越过两次,以计算
stdev
并执行plot
函数。plot
函数在 MATLAB 中执行:点击继续以继续执行模型。
如果返回到模型,计算出的
mean
和stdev
的值将出现在 Display 模块中。在 MATLAB Function 模块编辑器中,点击停止以停止仿真。
注意
您可以在普通模式和加速模式下调试 MATLAB Function 模块。但是,如果在加速模式下仿真的模型在模型引用中使用 MATLAB Function 模块,父模型仿真将忽略断点。
设置断点条件
您可以在 MATLAB Function 模块内的断点上输入 MATLAB 表达式作为条件。仅当满足该条件时,仿真才会在断点处暂停。要设置条件断点,请在 MATLAB Function 模块编辑器中,右键点击一个代码行左边的行号,选择设置条件断点,然后在对话框中输入条件。您可以使用任何有效的 MATLAB 表达式作为条件。此表达式可以包含数值以及位于断点作用域内的任何数据。
要添加或修改某现有断点的条件,请右键点击该断点,然后选择设置/修改条件。
在仿真期间观察函数变量
在仿真 MATLAB Function 模块时,您可以使用几种工具来跟踪函数的变量值。
在代码中观察函数变量
要在仿真期间在代码中查看 MATLAB Function 模块的函数中的变量值,请执行以下操作:
向 MATLAB Function 模块编辑器添加一个断点。
运行模型。
当仿真暂停时,指向一个变量名称。工具提示显示当前变量值。
例如,要在仿真期间观察变量
stdev
,请指向代码中的len
。
在符号窗格中观察函数变量
要在仿真期间在符号窗格中查看 MATLAB Function 模块的变量值,请执行以下操作:
打开符号窗格。在函数选项卡中,点击编辑数据。
向 MATLAB Function 模块编辑器添加一个断点。
运行模型。
当仿真暂停时,符号窗格会用断点处的值进行更新。如果变量是数组,则值列显示该变量的维度和数据类型。指向值列以查看值。
例如,要在仿真期间查看变量
vals
,请指向值列中vals
的值。
用命令行调试器监视函数变量
在仿真期间,您可以在命令行窗口中查看函数变量的值。当到达断点时,在 debug>>
提示符处输入变量的名称以查看其值。
debug>> stdev 1.1180 debug>>
您也可以在调试时在命令行窗口中输入以下命令:
命令 | 描述 |
---|---|
| 继续执行到下一个断点。 |
| 退出调试并终止仿真。 |
| 遇到断点后,前进到下一个程序步骤。跳过或者进入/退出 MATLAB 局部函数。 |
| 显示命令行调试帮助。 |
| 显示变量 |
| 将当前作用域中的所有变量保存到指定的文件中。遵循 MATLAB |
| 如果变量在当前作用域内,则等效于 |
| 显示当前作用域中的变量。 |
| 显示当前作用域中所有变量的大小和类(类型)。 |
如果在 debug>>
提示符下输入其他命令,结果将在 MATLAB Function 模块的工作区中执行。要在 MATLAB 基础工作区中发出命令,请使用 evalin
命令和第一个参量 "base"
后跟第二个参量命令,例如 evalin("base","whos")
。您无法在 debug>>
提示符下定义或更改变量。
显示大小限制
MATLAB Function 模块编辑器不显示维数超过二或元素数超过 200
的矩阵的内容。对于超过这些限制的矩阵,MATLAB Function 模块编辑器只显示形状和基类型。
检查数据范围违例
当输入或输出值进入或离开 MATLAB Function 模块时,模块将检查输入和输出数据是否存在范围违规问题。要启用数据范围违规检查,请打开“配置参数”窗口,点击诊断 > 数据有效性,并将仿真范围检查设置为 error
或 warning
。
指定数据范围
要指定输入和输出变量的范围,请在 MATLAB Function 模块编辑器中,执行以下操作:
在符号窗格中,点击感兴趣的变量。
在属性检查器的属性选项卡中,通过输入所需的最小值和最大值值来调整限制范围属性。
调试 Initialize Function 和 Terminate Function 模块中的 MATLAB Function 模块
当您在 Initialize Function 或 Terminate Function 模块中使用 MATLAB Function 模块时,您无法使用调试代码部分中的按钮来浏览断点。您必须使用命令行调试器或行号上下文菜单选项。
要使用行号上下文菜单,请在 MATLAB Function 模块编辑器中,添加一个断点并运行仿真。在仿真期间,右键点击断点后的任何行号,然后点击继续运行到此行。