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



我只有Lauterbach的调试器power-pro。我不能用它追踪,这正常吗?

如果这是正常的,我需要知道如何才能知道一个函数被调用了多少次?我在函数上设置了一个断点,但当我在同一时间使用trace.statistics时,它不会显示相同的数字(计数不相同(。

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

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

如果你只对一个函数的调用量感兴趣,我建议你只记录这个函数的调用。因此,在您的芯片中编程一个跟踪过滤器。可以使用命令Break.Set<your function's name>/TraceEnable执行此操作。尽管该命令听起来像";设置断点";,而是由于选项"0"而对跟踪滤波器进行编程/TraceEnable";

接下来,用Trace.Init清除跟踪缓冲区,运行代码直到它到达断点,然后打开Trace.STATistic.sYmbol Count /CountALL,这将显示函数被调用的频率。确保(即使使用活动筛选器(您的跟踪缓冲区在应用程序运行时不会溢出。


如果您不能使用片上跟踪,您可以创建一个变量,例如使用Var.NEWGLOBAL int count=0,并在函数的条目上设置一个断点,该断点每次命中时都会增加计数变量。例如:Break.set myFuncName /CMD "Var.ASSIGN count++" /RESUME。用Var.View %e count观察计数变量。

最新更新