预订演示

请注意 : 本帮助页面不适用于最新版本的Enterprise Architect. 最新的帮助文档在这里.

前页 后页

动作要点

操作点是可以执行操作的断点。当遇到断点时,调试器将调用动作点脚本,并且该过程将继续运行。操作点是复杂的调试工具,为专家开发人员提供了额外的命令套件。使用它们,开发人员可以更改功能的行为,捕获行为更改的点以及修改/检测对象的状态。为了支持这些功能,动作点可以更改原始局部变量和成员变量的值,可以定义其自己的“用户定义变量”并更改程序执行。

用户定义的动作点和断点变量

用户定义变量(UDV):

  • 提供在Actionpoint陈述式中设定UDV原语或字串的方法
  • 可以在多个标记/断点的条件语句中使用
  • 可以在同一局部变量窗口中轻松看到
  • 调试结束时,将记录所有UDV的最终值。

在UDV语法中,UDV名称:

  • 必须以#(哈希)字符开头
  • 不区分大小写

动作点声明

动作点语句可以包含set命令和goto命令。

设定命令

设置变量值。一个动作点语句可以包含多个“设置”命令,所有这些命令都应在任何“转到”命令之前。

'set'命令语法为:

设置LHS = RHS

哪里:

  • LHS =变量的名称为:
    -用户定义的变量(UDV),例如#myval
    -本地或成员变量,例如strName或this.m_strName
  • RHS =要分配的值:
    -作为文字或局部变量
    -如果是文字,则为整数,布尔值,浮点数,字符或字符串之一

set命令-变量示例

UDV示例

局部变量示例

设置#mychar ='a'

设置this.m_nCount = 0

设置#mystr =“一个字符串”

设置bSuccess = false

设置#myint = 10

设置#myfloat = 0.5

设置#mytrue = true

goto命令

goto命令-将执行切换到函数中的其他行号。一个Actionpoint语句只能包含一个goto命令,作为该语句中的最后一条命令。

goto命令的语法为:

转到L

其中L是当前函数中的行号。

整数运算符

如果UDV存在且类型为int,则可以使用++和-运算符对其进行递增和递减。例如:

  1. 创建UDV并将其值设置为本地整数变量。
    AP1:设置#myint = nTotalSoFar
  2. 增加UDV。
    AP2:#myint ++
  3. 减少UDV。
    AP3:#myint--

计时器操作

动作点可以报告两点之间经过的时间。只有一个可用的计时器,可以使用startTimer命令重置或启动该计时器。然后可以使用printTimer命令打印当前经过的时间。最后,将打印经过的总时间,并使用endTimer命令结束计时器。

动作点条件示例

使用文字和常量:

  • (#mychar ='a')
  • (#mystr <>“”)
  • (#myint> 10)
  • (#myfloat> 0.0)

使用局部变量:

  • (#myval == this.m_strValue)
  • (#myint <>此-> m_nCount)
  • (#myint!= this-> m_nCount)

指令记录

指令记录对于检测已知行为的变化可能非常有用。与先前执行(A)背离的执行点(B)。这些命令是:

  • recStart-开始记录或开始比较是否存在先前的记录
  • recStop-结束记录
  • recPause-暂停记录
  • recResume-恢复记录
recStart命令开始记录指令。然后存储执行的指令。遇到recStop命令时,将保存记录。在两个动作点之间的任何时间只能有一个保存的记录。当遇到recStart并且存在先前的记录时,调试器将开始比较每个后续指令及其记录。它可以执行许多比较。如果并且当检测到差异时,调试器将中断,并且行为更改的代码行将显示在代码编辑器中。比较的迭代也被打印。

记录默认情况下存储在内存中,但也可以使用以下命令语法将其存储到文件中:

recStart文件规范

例如:

recStart c:\ mylogs \ onclickbutton.dat

当遇到指定文件的recStart命令且该文件存在时,该文件将被加载到内存中,调试器将立即进入比较模式。

表达方式

Breakpoint,Actionpoint和Testpoint条件表达式中没有隐式优先级。在复杂的表达式中,必须使用括号。请参阅以下示例:

类型

Actionpoint UDV示例

(#myint = 1)和(#mystr =“德国”)

局部变量示例

(this.m_nCount> 10)或(nCount%1)

(this.m_nCount> 10)或(bForce)

条件表达式中的等式运算符

<>-不相等

!=-不相等

==-等于

=-相等

Actionpoint中的赋值运算符

=-将RHS分配给LHS

条件表达式中的算术运算符

/-除法

+-加

--减

*-乘法

%-模量

条件表达式中的逻辑运算符

AND-两者都必须为真

或-必须为真

&&-两者都必须为真

|| -必须是真的

^-异或(仅一个必须为真)