1

我正在通过 lauterbach-trace32 探针在物理硬件上测试实时应用程序。

Trace32 文档过于庞大且技术性很强,但我无法找到如何实现我需要的东西。我想知道是否有一种方法可以在程序执行中每次到达特定代码行(正在测试)时执行 trace32 函数。

我需要的是类似于数据库场景中的触发器,每次满足特定条件时都会引发自动事件。

谢谢你们!

4

1 回答 1

2

您总是可以设置一个断点,每次断点被击中时都会执行一个 PRACTICE 命令。例如

Break.Set myFunc /CMD "PRINT ""Hello World""" /RESUME 

因此,当达到函数 myFunc() 时,这将停止您的目标 CPU 。然后执行 PRACTICE 命令PRINT "Hello World",最后你的目标 CPU 继续执行(感谢 option /RESUME)。(考虑双引号转义字符串中的双引号)

除了单个命令,您还可以执行更多命令(通过/CMD多次使用选项)或执行 PRACTICE 脚本。

如果您想在特定代码行上触发调试器操作而不停止该代码行上的 CPU,则需要使用外部跟踪接口进行实时跟踪。因此,例如,您将需要带有嵌入式跟踪宏单元 (ETM) 的 ARM CPU 或带有 Nexus 接口的 PowerPC。此外,您还需要使用劳特巴赫硬件进行跟踪记录,例如 PowerTrace、CombiProbe 或 uTrace。

如果您有实时跟踪,您可以在特定代码行上设置“触发点”,并在“触发点”触发时执行命令。它看起来与断点几乎相同:

Break.Set myFunc /TraceTrigger /CMD "PRINT ""Hello World""" /RESUME 

所以唯一的区别是选项“/TraceTrigger”。当然,您应该确保实时跟踪实际上与您的设置一起使用。

于 2015-08-07T09:16:24.260 回答