基于J-Trace PRO和Ozone实现更好的代码分析、验证

浏览:2016来源:本站时间:2021-08-18

J-Trace PRO是一款高级跟踪仿真器,支持Arm Cortex内核的调试跟踪。J-Trace PRO能在很长一段时间内捕获完整的指令跟踪,从而能够记录不常见的、难以重现的错误。如果要充分实现所有J-Trace PRO功能,SEGGER的图形化独立调试器Ozone无疑是最佳方案。Ozone 是用于 J-Link 和 J-Trace 的跨平台调试器和性能分析器,并且Ozone的高级分析功能对J-Trace PRO进行了一定的补充。Ozone可以独立于编译器使用,也可以与IDE或工具链的输出一起使用。


Trace功能概述

通过直接集成 J-Trace,Ozone 支持 CPU 指令跟踪并提供不同的方法来分析目标系统的运行时行为和性能。

Ozone的跟踪窗口提供了多种方式和视图来查找错误和低效率代码,并验证系统是否按预期运行。

Ozone提供的Trace高级功能如下所列:

1、指令跟踪

2、代码分析

3、时间轴


指令跟踪

通过直接集成 J-Trace,Ozone 可以使用嵌入式目标的跟踪模块以非侵入方式捕获和分析系统的运行时行为。指令跟踪是跟踪数据提供的基本信息。每条获取或执行的指令都被记录并提供给调试器。J-Trace 的流式跟踪功能可确保所有这些信息都可用于分析。

Ozone 在其指令跟踪窗口中显示最近执行的指令,并提供一些基本信息。这可以对系统上次的操作进行分析,从而回顾之前的代码执行情况。

图片

图1 源代码窗口


图片

图2 指令跟踪窗口


Ozone指令跟踪以机器指令列表的形式显示应用程序的指令历史。这类似于反汇编窗口,但按执行顺序排列。该列表从最近执行(底部)到最先执行(顶部)。

执行的指令以调用帧块进行分组。每个调用帧块都包含在当前帧内执行的指令集:例如,从函数的入口到子函数的调用之间。调用帧块可以折叠或展开以隐藏或显示附属指令。在特定的调用帧块内执行的指令数显示在块的标题中。

时序信息允许指令跟踪窗口提供有关块执行所用时间的更详细信息。根据时间信息的刻度,可以测量块、函数甚至单个指令的持续时间。

源代码窗口和反汇编窗口都与指令跟踪窗口同步。它们突出显示指令跟踪窗口中所选的指令或相应的源代码行。这样就可以进行时间的回溯,并且是一行一行的重放系统执行情况。

代码分析

Ozone 的跟踪功能可以提供有关目标系统上指令执行的准确信息。这就可以对实际硬件上的固件进行完整的代码覆盖分析。借助于J-Trace PRO流跟踪功能的支持,代码覆盖率信息会在目标运行时实时生成和更新。打开Code Profile窗口,如下图所示。

图片

图3 Code Profile窗口


Code Profile 窗口显示了源代码覆盖率和指令覆盖率。分层视图显示了任何级别的覆盖范围:文件、函数、源代码行和指令。

代码分析测量函数、块和指令的执行时间和频率。这些指标描述了一个执行系统的特征,并强调了计算时间花在哪里。这就使用户很容易找到优化的地方:频繁执行或对系统施加高负载的代码。

识别代码的“高频热点”是非常重要的。将经常使用的函数的执行时间减少一个 CPU 周期比将一个很少使用的函数减少一千个 CPU 周期对系统的影响更大。

图片

图4 实时更新的计数信息


使用 J-Trace PRO 流式跟踪可以获得最准确的代码分析信息。Ozone 在目标运行时实时更新代码分析数据。它将执行计数映射到源代码窗口中,并显示每个函数、块或源代码行的执行次数。这能够轻松识别耗时或频繁调用的例程,有助于选择性地优化程序。将鼠标悬停在指定行处,可以获得更多的执行信息。

时间轴

时间轴窗口提供了调用堆栈随时间变化的图形表示。时间轴基于记录的跟踪数据,将信息映射到源函数。

图片

图5 时间轴窗口


时间轴堆栈的每个调用帧都类似于一个函数调用。使用时间轴,用户可以轻松测量函数调用花费了多长时间、调用了哪些子例程以及在子例程中花费了多少时间。程序流程中的不连续性(例如中断和上下文切换)会通过背景颜色更改突出显示,以便开发者轻松识别重要事件。

并且时间轴窗口与指令跟踪窗口同步,以便在应用程序中快速导航并识别当前正在查看的内容。

J-Trace PRO的流式跟踪能力配合Ozone的代码分析、指令跟踪等功能,具有强大的性能分析能力,能够帮助开发者获得对于整个系统的把控,跟踪错误和低效率代码。

京ICP备:京ICP备05011254号-1 版权归北京麦克泰软件技术有限公司所有
北京麦克泰软件技术有限公司