主要内容

调试一个独立的状态流图表

独立状态流®图表是一个MATLAB®类,该类定义有限状态机的行为。独立图表使用MATLAB作为操作语言实现经典图表语义。您可以使用MATLAB的全部功能对图表进行编程,包括在Simulink中限制代码生成的功能金宝app®. 有关详细信息,请参阅创建状态流程图以作为MATLAB对象执行.

要启用调试,请在独立图表或执行图表的MATLAB脚本中设置断点。断点暂停图表的执行。暂停执行时,您可以单步执行图表中的每个操作,查看数据值,并与MATLAB工作区交互以检查图表的状态。

调试从MATLAB脚本执行的独立图表时,首先打开Stateflow编辑器。在打开编辑器之前尝试调试独立图表至少一次可能会产生意外结果。

有关在Simulink模型中调试状态流程图的信息,请参阅金宝app调试状态流程图.

设置并清除断点

断点显示为圆形红色徽章。例如,此图表包含状态的断点A.以及从A.B.

您可以在图表、状态和转换上设置断点。

图表上的断点

要在图表上设置断点,请在图表内单击鼠标右键,然后选择在图表条目上设置断点. 这种类型的断点会在进入图表之前暂停执行。

要删除断点,请在图表内单击鼠标右键并清除在图表条目上设置断点选项

状态和转换上的断点

可以在状态和转换上设置不同类型的断点。

对象 断点类型
陈述

论国家进入-在执行状态之前暂停执行进入行动。

在状态期间-在执行状态之前暂停执行在期间行动。

论国家出口-执行状态后暂停执行出口行动。

过渡

测试转换时-在测试转换是否为有效路径之前暂停执行。如果转换上不存在任何条件,则此断点类型不可用。

当转换有效时-在转换有效后,但在进行转换之前暂停执行。

要在状态或转换上设置断点,请右键单击该状态或转换,然后选择设置断点. 对于状态,默认断点为论国家进入在状态期间。对于转换,默认断点为当转换有效时. 要更改断点的类型,请单击断点标记并选择不同的断点配置。有关详细信息,请参阅管理断点类型和条件.

要删除断点,请右键单击状态或转换并选择清除断点. 要删除图表中的所有断点,请在图表内单击鼠标右键,然后选择“删除”清除图表中的所有断点.

管理断点类型和条件

断点标记可以表示多种类型的断点。要查看列出在状态或转换上设置的断点类型的工具提示,请指向其标记。在本例中,状态上的标记A.表示两种断点类型:论国家进入在状态期间.

要更改对象上断点的类型,请单击断点标记。在“断点”对话框中,可以根据对象类型选择不同的断点配置。清除“断点”对话框中的所有复选框将删除断点。

要限制执行在断点处停止的次数,请向断点添加一个条件。默认情况下,状态流程图在到达断点时暂停。向断点添加条件时,图表仅在条件为真时才会在断点处暂停。例如,在这些条件下,状态上的断点A.仅当x答案是否定的。

要指定断点的条件,可以使用任何有效的MATLAB表达式,该表达式组合数值和断点范围内的状态流数据对象。

断点后的控制图执行

当执行在断点处停止时,Stateflow进入调试模式。

  • MATLAB命令提示符更改为K> >.

  • “符号”窗格显示图表中每个数据对象的值。

  • 图表以蓝色突出显示活动元素,以绿色突出显示当前正在执行的对象。

例如,当执行在状态为的断点处停止时A.,国家的边界和国家的第一份声明进入动作以绿色高亮显示。

执行状态标记出现在执行暂停的图形对象中。

徽章 描述

执行在进入图表或处于状态之前暂停进入行动。

执行在一种状态下暂停在期间行动。

执行在一种状态下暂停出口行动。

在测试转换之前暂停执行。

执行在进行有效转换之前暂停。

当图表在断点处暂停时,可以使用以下命令继续执行:

  • 按钮调试标签

  • MATLAB命令窗口

  • 键盘快捷键

行动 调试选项卡按钮 MATLAB命令 键盘快捷键 描述
继续

dbcont Ctrl+T

继续执行到下一个断点。

跨过

dbstep F10

进入图表执行的下一步。在图表级别,可能的步骤包括:

  • 进入图表

  • 执行转换操作

  • 激活状态

  • 执行状态操作

有关详细信息,请参阅状态流程图的执行.

介入

dbstep in F11

从调用函数的状态或转换操作,前进到函数中的第一个可执行语句。

从包含另一个函数调用的函数中的语句,前进到第二个函数中的第一个可执行语句。

否则,进入图表执行的下一步。(请参见“跨步”选项。)

走出去

退出 换档+F11

从函数调用返回调用函数的语句。

否则,继续执行到下一个断点。(请参见“继续”选项。)

停止

dbquit Ctrl+Shift+T

退出调试模式并中断执行。

从Stateflow编辑器执行独立图表时,此操作将从MATLAB工作区中删除图表对象。

在包含多个语句的状态或转换操作中,您可以通过选择一个语句一次遍历单个语句跨过。Stateflow编辑器在执行每个语句之前高亮显示该语句。

因为独立图表根据挂钟时间定义时态逻辑,所以当图表在断点处暂停时,时态逻辑运算符可以生效。在这种情况下,图表退出调试模式,执行继续到下一个断点。

检查并更改图表数据的值

当statflow处于调试模式时,Symbols窗格将显示图表中每个数据对象的值。您还可以通过指向图表中的状态或转换来检查数据值。工具提示显示在所选状态或转换中使用的每个数据对象的值。

要测试图表的行为,可以在“符号”窗格中,在执行期间更改数据对象的值。或者,在调试提示下,使用关键字输入新值代替图表对象名称。例如,更改本地数据的值x,输入:

这个.x=7
新值将显示在“符号”窗格中。

在Simulink模型中调试图表时,不要使用关键字金宝app. 相反,您可以在调试提示下直接访问所有Stateflow数据。有关详细信息,请参阅在MATLAB命令窗口中查看和修改数据.

相关话题