检查首先到达哪个断点。用于测试自动化的 trace32 工具箱劳特巴赫
Check which breakpoint is reached first. trace32 toolbox lauterbach for test automation
基本上我有两个断点,比方说 A 和 B。我写了一个用于自动化测试的 .cmm 脚本,我想知道你怎么能看到我在断点 B 之前到达断点 A。基于这个假设有通过或未通过测试的条件。下面的代码仅显示是否达到断点并且它们是。
GO A
TOOLBOX WaitValidateBreakpoint A
ENTRY &StoppedAtBreakpoint
IF &StoppedAtBreakpoint==FALSE()
(
TOOLBOX TestStepFail "Breakpoint A is not reached"
RETURN
)
ELSE
(
TOOLBOX TestStepPass "Breakpoint A is reached"
RETURN
)
GO B
TOOLBOX WaitValidateBreakpoint B
ENTRY &StoppedAtBreakpoint
IF &StoppedAtBreakpoint==FALSE()
(
TOOLBOX TestStepFail "Breakpoint B is not reached"
RETURN
)
ELSE
(
TOOLBOX TestStepPass "Breakpoint B is reached"
RETURN
)
根据问题描述,我假设现有的自动化脚本能够检测是否命中断点 A 或 B。这由包含两个断点地址的两个 PRACTICE 宏反映出来:
LOCAL &address_bp_a &address_bp_b
另外两个 PRACTICE 宏跟踪哪个断点首先被触发:
LOCAL &bp_a_first &bp_b_first
&bp_a_first=FALSE()
&bp_b_first=FALSE()
脚本启动程序执行并监视首先触发哪个断点。如果遇到其他断点,这会在循环中发生:
WHILE !(&bp_a_first||&bp_b_first)
(
Go
WAIT !STATE.RUN()
IF Register(PC)==&address_bp_a
(
&bp_a_first=TRUE()
)
ELSE IF Register(PC)==&address_bp_b
(
&bp_b_first=TRUE()
)
)
IF &bp_a_first
(
PRINT "Breakpoint A was hit first"
)
ELSE IF &bp_b_first
(
PRINT "Breakpoint B was hit first"
)
基本上我有两个断点,比方说 A 和 B。我写了一个用于自动化测试的 .cmm 脚本,我想知道你怎么能看到我在断点 B 之前到达断点 A。基于这个假设有通过或未通过测试的条件。下面的代码仅显示是否达到断点并且它们是。
GO A
TOOLBOX WaitValidateBreakpoint A
ENTRY &StoppedAtBreakpoint
IF &StoppedAtBreakpoint==FALSE()
(
TOOLBOX TestStepFail "Breakpoint A is not reached"
RETURN
)
ELSE
(
TOOLBOX TestStepPass "Breakpoint A is reached"
RETURN
)
GO B
TOOLBOX WaitValidateBreakpoint B
ENTRY &StoppedAtBreakpoint
IF &StoppedAtBreakpoint==FALSE()
(
TOOLBOX TestStepFail "Breakpoint B is not reached"
RETURN
)
ELSE
(
TOOLBOX TestStepPass "Breakpoint B is reached"
RETURN
)
根据问题描述,我假设现有的自动化脚本能够检测是否命中断点 A 或 B。这由包含两个断点地址的两个 PRACTICE 宏反映出来:
LOCAL &address_bp_a &address_bp_b
另外两个 PRACTICE 宏跟踪哪个断点首先被触发:
LOCAL &bp_a_first &bp_b_first
&bp_a_first=FALSE()
&bp_b_first=FALSE()
脚本启动程序执行并监视首先触发哪个断点。如果遇到其他断点,这会在循环中发生:
WHILE !(&bp_a_first||&bp_b_first)
(
Go
WAIT !STATE.RUN()
IF Register(PC)==&address_bp_a
(
&bp_a_first=TRUE()
)
ELSE IF Register(PC)==&address_bp_b
(
&bp_b_first=TRUE()
)
)
IF &bp_a_first
(
PRINT "Breakpoint A was hit first"
)
ELSE IF &bp_b_first
(
PRINT "Breakpoint B was hit first"
)