Отладка TRACE32 - Отслеживание вызова функции - PullRequest
0 голосов
/ 26 октября 2018

Как узнать, какая функция вызвала конкретную инструкцию, используя trace32?На основе ARM.

Как будто я знаю, что в этой инструкции X есть какая-то ошибка.Как я могу проследить, какая функция в коде выполнила эту инструкцию X.

Также, как узнать больше об использовании trace32. Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Если вам известна кодировка вашей инструкции, вы можете искать в своей памяти инструкцию с помощью команды Data.Find.

Например: найти в диапазоне адресов 0x10000--0x1FFFF инструкцию "asreqКод Thumb2, закодированный в r0, r12, # 0x1F ", вы можете использовать:

Data.find P:0x10000--0x1FFFF %Long 0x01A00FCC

Другой вариант: запишите ваше приложение с трассировкой ETM (если это доступно с вашим чипом и инструментом Lauterbach) и выполните текстовый поиск череззапись.Например:

WinPOS ,,,,,,TraceList
Trace.List List.CODE List.ADDRESS List.ASM 
WinFIND "asreq   r0,r12,#0x1F" TraceList
0 голосов
/ 26 октября 2018

Я не думаю, что вам нужен след в вашем случае. Просто установите точку останова, а затем посмотрите на стек вызовов:

# set breakpoint
Break.Set P:<address>
# go until breakpoint is hit
Go
WAIT !STATE.RUN()
# display call stack
Frame

Чтобы узнать, как использовать TRACE32, проверьте установку TRACE32, например, "Training_debugger.pdf".

...