1

基本上我有两个断点,比如说 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
  )
4

1 回答 1

2

由于问题描述,我假设现有的自动化脚本能够检测断点 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"
)
于 2017-08-08T19:26:53.450 回答