Merolla
Merolla

Reputation: 315

Trace32 doesn't wait until a command gets executed to execute the next command

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.

Upvotes: 1

Views: 668

Answers (1)

Reinhard Weiss
Reinhard Weiss

Reputation: 566

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

Upvotes: 3

Related Questions