1

I am running a Practice script inside Trace32. I have noticed that if for example I have this set of commands

Go
Step.Over

Step.Over doesn't necessarily wait for Go to finish execution to start. How to tell Trace32 not to execute a command until the other one finished. I have tried inserting Wait 2.s after each command. However, since I don't know how long the command will take that doesn't work in every run.

Merolla
  • 315
  • 2
  • 10

1 Answers1

3

I assume that with "wait for Go to finish execution" you mean to wait until the processor hits a breakpoint. The Go command however does not wait until a breakpoint is reached. The execution of the Go command is completed as soon as the processor has been started.

Use the command WAIT <event> [<timeout>] to make the script wait for the breakpoint. The timeout is optional, but highly recommended for script robustness.

; start execution
Go

;wait until processor halts at breakpoint (timeout: 2 seconds)
WAIT !STATE.RUN() 2s

;error handler
IF STATE.RUN()
(
  PRINT %ERROR "Breakpoint not reached!"
  ENDDO
)

;continue stepping
Step.Over
Reinhard Weiss
  • 426
  • 2
  • 4