在 Trace32 中一个函数被调用了多少次?

How many time a function is called in Trace32?

我只有 Lauterbach 的调试器 power-pro。我无法对其进行跟踪,这正常吗?

如果正常的话,我想知道我怎么知道一个函数被调用了多少次?我在我的函数上设置了一个断点,但是当我在同一时间使用 trace.statistic 时它没有显示相同的数字(计数不一样)。

如果选择了Trace.METHOD ONCHIP,您的芯片实际上支持一些跟踪功能。程序流存储在芯片上的专用存储器中,并通过 JTAG 从那里读取。 (Analyzer 或 CAnalyzer 方法适用于劳特巴赫硬件,它可以存储从芯片通过专用物理接口发送的程序流程。)

片上跟踪缓冲区可能不是很大。因此,当它溢出时,它将停止记录或覆盖最旧的数据。所以你的片上缓冲区只能记录一定数量的已执行指令。 所以在 Window Trace.state 中观察你的跟踪缓冲区是如何填满的。

如果你只关心一个函数调用了多少,我建议只记录这个函数的调用。因此,在您的芯片中编写一个跟踪过滤器。您可以使用命令 Break.Set <em><您的函数名称></em> /TraceEnable 执行此操作。尽管该命令听起来像“设置断点”,但由于选项“/TraceEnable”

,它实际上是在编程跟踪过滤器

接下来,使用 Trace.Init、运行 代码清除跟踪缓冲区,直到它到达断点并打开 Trace.STATistic.sYmbol Count /CountALL,这会显示您的函数被调用的频率。确保(即使使用有源过滤器)您的跟踪缓冲区在您的应用程序 运行ning 时不会溢出。


如果您不能使用片上跟踪,您可以创建一个变量,例如使用 Var.NEWGLOBAL int \count=0 并在函数的入口处设置一个断点,每次遇到断点时都会增加计数变量。例如。像这样:Break.set myFuncName /CMD "Var.ASSIGN \count++" /RESUME 。使用 Var.View %e \count.

观察计数变量