1

如何知道哪个函数使用 trace32 调用了特定指令?基于ARM。

好像我知道这条指令 X 有一些错误。如何追溯代码中执行此指令 X 的函数。

此外,如何了解更多关于使用 trace32 的任何帮助将不胜感激。

4

2 回答 2

2

如果您知道指令的编码,则可以使用该命令在内存中搜索Data.Find指令。

例如:要在地址范围 0x10000--0x1FFFF 内查找指令“asreq r0,r12,#0x1F”编码的 Thumb2,您可以使用:

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

其他选项:使用 ETM 跟踪记录您的应用程序(如果您的芯片和劳特巴赫工具提供此功能)并通过记录进行文本搜索。例如:

WinPOS ,,,,,,TraceList
Trace.List List.CODE List.ADDRESS List.ASM 
WinFIND "asreq   r0,r12,#0x1F" TraceList
于 2018-10-29T19:05:36.023 回答
1

我认为您的情况不需要跟踪。只需设置一个断点,然后查看调用堆栈:

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

要了解如何使用 TRACE32,请检查您的 TRACE32 安装,例如“training_debugger.pdf”。

于 2018-10-26T15:16:24.440 回答