前页 | 后页 |
动作要点
操作点是可以执行操作的断点。当遇到断点时,调试器将调用动作点脚本,并且该过程将继续运行。操作点是复杂的调试工具,为专家开发人员提供了额外的命令套件。使用它们,开发人员可以更改功能的行为,捕获行为更改的点以及修改/检测对象的状态。为了支持这些功能,动作点可以更改原始局部变量和成员变量的值,可以定义其自己的“用户定义变量”并更改程序执行。
用户定义的动作点和断点变量
用户定义变量(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,则可以使用++和-运算符对其进行递增和递减。例如:
- 创建UDV并将其值设置为本地整数变量。
AP1:设置#myint = nTotalSoFar - 增加UDV。
AP2:#myint ++ - 减少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文件规范
例如:
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-两者都必须为真 或-必须为真 &&-两者都必须为真 || -必须是真的 ^-异或(仅一个必须为真) |