如何知道哪个函数使用 trace32 调用了特定指令?基于ARM。
好像我知道这条指令 X 有一些错误。如何追溯代码中执行此指令 X 的函数。
此外,如何了解更多关于使用 trace32 的任何帮助将不胜感激。
如何知道哪个函数使用 trace32 调用了特定指令?基于ARM。
好像我知道这条指令 X 有一些错误。如何追溯代码中执行此指令 X 的函数。
此外,如何了解更多关于使用 trace32 的任何帮助将不胜感激。
如果您知道指令的编码,则可以使用该命令在内存中搜索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
我认为您的情况不需要跟踪。只需设置一个断点,然后查看调用堆栈:
# set breakpoint
Break.Set P:<address>
# go until breakpoint is hit
Go
WAIT !STATE.RUN()
# display call stack
Frame
要了解如何使用 TRACE32,请检查您的 TRACE32 安装,例如“training_debugger.pdf”。