跟踪工具是实时跟踪应用程序操作的一种方法,与需要停止应用程序以检查其状态的大多数调试器不同。断点可以促进该过程;它们可以允许开发人员逐步通过代码来隔离问题的发生时,因此可以采取纠正措施。
不幸的是,停止应用程序并不总是可行的选择。当马达控制程序停止而转子仍在转动时,就会发生不好的事情。如果软件停止运行,自动驾驶汽车往往会做一些坏事,即使只是一纳秒的零头。如果其中一方响应不够快,网络协议通常会超时。
跟踪工具的问题是它们生成大量的数据(见图).有一个工具可以帮助将大量的系统跟踪转储转换为用于实时调试的有用分析Percepio的Traceanalyzer。它使用钩子进入像Linux和Rtoss这样的操作系统FreeRTOS,Keil新RTX5,Express Logic的Threadx,它是用在瑞萨的Synergy微控制器家族.
您是更愿意分析文本转储(上),还是使用类似Traceanalyzer(下)的跟踪工具来处理分析并对应用程序提供更有用的见解?
对于Linux来说,Percepio利用了LTTNG项目的Linux跟踪工具(LTT)。LTT利用Linux提供操作系统和应用程序的详细信息,让开发人员了解任务是如何执行的,以及他们正在使用什么资源。Traceanalyzer需要类似的工具才能与其他操作系统协同工作。在ThreadX中,这种支持通常已经可用了,它也被支持Express Logic自己的Tracex.
现在,有人可能会认为,使用一些基本过滤功能的跟踪信息的简单图形表示将提供开发人员所需的一切。但事实却大不相同,特别是当多线程、内核和服务出现时。同样,跟踪信息可以用于查明从死锁到竞态条件的问题。有时,开发人员可以通过查看更基本的表示来发现这个问题,但是在显示数据之前,让跟踪工具进行更多的分析就更有意义了——因此tracesanalyzer提供了过多的选项和表示图形(超过25个不同的视图)。
跟踪工具的其他挑战与它们是后期调试工具还是使用最近生成的数据的实时工具有关。例如,可以使用循环缓冲区配置LTTng,循环缓冲区持续填充并流到运行跟踪分析工具的调试主机上。
对于不熟悉跟踪工具的开发人员来说,最大的挑战是理解它们是如何工作的,并细化技术以获得所需的信息。这类似于学习传统调试器的使用。当然,我们需要利用这些工具来获得优势。
在PLUS方面,跟踪工具具有提供分析机制来识别正常和异常操作的优势,使开发人员的工作更容易。在许多方面,这类似于学习如何使用示波器或逻辑分析仪。很容易开始,但它可能需要很长时间才能掌握。良好的跟踪工具在这个网络化的多芯片系统上(SoC)平台上的良好追踪工具是无价的,该平台链接IoT设备和云,以及电机控制等深度嵌入的实时应用。