SEGGER Ozone是用于J-link和J-Trace的多平台调试、分析工具。可加载IAR,Keil,Gcc,Clang/LLVM等工具链生成的Elf/Dwarf可执行文件,进行C/C++源代码调试和汇编指令调试。
Ozone调试器加载elf文件时,会自动查找elf文件中引用的源文件。但大多数编译器会把源文件的路径设置成绝对路径,如果把项目移动到其他文件夹或是另一台计算机再打开,调试时将无法找到源文件。本文将解析如何实现Ozone项目(.jdebug)可移植。
1解决方式
在Ozone中,使用项目向导新建项目时(Ozone调试器使用攻略),如果导入的elf文件和对应的源文件位于同一文件夹中,Ozone就会自动将该项目设置为可移植的。
如果不满足这个条件,elf文件位置将被默认设置为绝对路径,项目位置移动后,将无法立即使用Ozone对(.jdebug)项目进行调试,提示无法找到elf文件。可以通过编辑(.jdebug)文件中的Project.AddPathSubstitute()和File.Open()语句来解决这个问题。
(1). 在File.Open()中设置了elf文件的路径,该函数支持相对路径。修改这条语句为项目的相对路径,以保证项目的可移植性。
(2). 在Project.AddPathSubstitute()中全部或部分替换elf文件中引用源文件的绝对路径。你可以在View->Source Files下验证路径替换是否有效。如果没有找到源文件,它旁边会有一个警告小图标。
1验证
Ozone自动生成的项目可移植性可能无法满足实际需求。SEGGER官网示例工程下载链接
解压后,使用Ozone调试器打开Ozone文件夹中的项目文件Ozone_Project.jdebug, 提示无法找到 elf 文件。
要解决此问题,先关闭Ozone并使用文本编辑器打开Ozone_Project.jdebug文件,查找“File.Open”,你会看到这里有一条绝对路径,它是创建项目原始主机的elf文件位置。
将这条绝对路径修改为相对路径File.Open(“../Output/Debug/Exe/ Ozone_Portable_Project_Example.elf”); 保存文件并使用Ozone打开。
Ozone提示找不到main.c文件,这是因为语句“Project.AddPathSubstitute”有问题。
修改为Project.AddPathSubstitute ("C:/ Users /Nino /Documents /SEGGER Embedded Studio for ARM Projects/Ozone_Portable_Project_Example","$(ProjectDir)/.."); 保存项目文件并再次使用Ozone打开。
可以看到在Ozone中正确显示源文件。
通过修改*.jdebug的方式,可以非常容易的实现项目可移植。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !