Ozone是一个跨平台支持的代码调试软件,支持J-link和J-Trace调试器。可以加载IAR、keil、GCC、clang/LLVM等工具链编译生成的Elf/DwaRF可执行文件,进行C/C++源码调试和汇编指令调试。通过J-Link实现高速下载和无限Flash断点功能(需J-Link型号支持)。本文将介绍如何使用Ozone调试器。
安装软件并创建调试工程
(1)首先需要去Segger官网下载并安装Ozone调试器,下载链接如下:
https://www.segger.com/downloads/jlink/
(2)打开Ozone时会提示需要创建工程,并且需选择芯片的型号和处理器内核类型。
随后选择所使用的调试接口类型以及通信速率,例程中使用的是SWD接口。
(3)加载带调试信息的目标文件,支持IAR、keil、GCC、clang/LLVM等工具链编译生成的Elf/Dwarf可执行文件。
(4)设置PC和堆栈指针的初始值如何获取,可以从文件中获取或者手动指定。如无特殊要求,保持默认选择即可。
(5)烧录文件并进入调试工作窗口。
点击左上角的绿色图标,下载并复位应用程序。图标右侧的箭头为常规的全速运行、单步等调试操作按钮。
常用调试窗口介绍
进入调试界面后,可以发现Ozone调试器提供了常用的函数列表、反汇编、寄存器、内存等调试窗口。
在源码位置处右键可以添加代码断点,以及打开watch数据观察窗口,支持局部和全局变量。
在函数位置处右键选择show call graph选项,将会显示详细的该函数的调用层级关系,例如下图中展示了prvPortStartFirstTask()的调用关系,以及包含函数自身堆栈量在内的堆栈使用情况。
main函数自身使用的堆栈量为24字节,且main函数调用的所有子函数中最大堆栈使用量是232,所以main函数整个执行过程中使用的最大堆栈空间为两者相加即256字节。右侧的Depth显示了函数的最大调用深度,即函数内部嵌套了几层函数,如果存在函数指针调用等形式则会用FP来表示。
如果项目中使用了embOS, FreeRTOS, ChibiOS或者Zephyr这4种RTOS,那么Ozone调试器提供的RTOS调试插件将会展示内核相关信息。例如任务的优先级、任务执行状态和任务堆栈使用情况等。
Ozone是一款功能强大的调试器,以上仅为部分调试窗口介绍,感兴趣的用户可以去官网下载并尝试使用。
|