Проверьте, какая точка останова достигается первой. набор инструментов trace32 lauterbach для автоматизации тестирования

В основном у меня есть две точки останова, скажем, A и B. Я написал сценарий .cmm для тестирования автоматизации, и я хочу знать, как вы можете увидеть, что точка останова A достигнута до точки останова B. провалить тест. Приведенный ниже код просто показывает, достигнуты ли точки останова, и они есть.

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
  )

person Daniel    schedule 08.08.2017    source источник
comment
TOOLBOX не является собственной командой TRACE32. Я предполагаю, что это определено где-то в ваших сценариях CMM с помощью ON CMD TOOLBOX или GLOBALON CMD TOOLBOX. Если вам нужно решение, основанное на команде TOOLBOX, я думаю, вам нужно также опубликовать ее определение.   -  person Holger    schedule 08.08.2017


Ответы (1)


Из-за описания проблемы я предполагаю, что существующий сценарий автоматизации может определить, достигнута ли точка останова 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"
)
person xasc    schedule 08.08.2017