查看: 875|回复: 0

[原创] 如何实现Ozone项目可移植?

[复制链接]
  • TA的每日心情
    开心
    2023-6-12 14:34
  • 签到天数: 165 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2023-1-5 15:01:32 | 显示全部楼层 |阅读模式
    分享到:
    SEGGER Ozone是用于J-link和J-Trace的多平台调试、分析工具。可加载IAR,Keil,Gcc,Clang/LLVM等工具链生成的Elf/Dwarf可执行文件,进行C/C++源代码调试和汇编指令调试。
    Ozone调试器加载elf文件时,会自动查找elf文件中引用的源文件。但大多数编译器会把源文件的路径设置成绝对路径,如果把项目移动到其他文件夹或是另一台计算机再打开,调试时将无法找到源文件。本文将解析如何实现Ozone项目(.jdebug)可移植。
    1、解决方式
    在Ozone中,使用项目向导新建项目时,如果导入的elf文件和对应的源文件位于同一文件夹中,Ozone就会自动将该项目设置为可移植的。
    如果不满足这个条件,elf文件位置将被默认设置为绝对路径,项目位置移动后,将无法立即使用Ozone对(.jdebug)项目进行调试,提示无法找到elf文件。可以通过编辑(.jdebug)文件中的Project.AddPathSubstitute()和File.Open()语句来解决这个问题。
    (1).  在File.Open()中设置了elf文件的路径,该函数支持相对路径。修改这条语句为项目的相对路径,以保证项目的可移植性。
    (2).  在Project.AddPathSubstitute()中全部或部分替换elf文件中引用源文件的绝对路径。你可以在View->Source Files下验证路径替换是否有效。如果没有找到源文件,它旁边会有一个警告小图标。
    2、验证
    Ozone自动生成的项目可移植性可能无法满足实际需求。SEGGER官网示例工程下载链接:

    https://wiki.segger.com/images/6/64/Ozone_Portable_Project_Example.zip

    解压后,使用Ozone调试器打开Ozone文件夹中的项目文件Ozone_Project.jdebug, 提示无法找到 elf 文件。
    1.jpg 要解决此问题,先关闭Ozone并使用文本编辑器打开Ozone_Project.jdebug文件,查找“File.Open”,你会看到这里有一条绝对路径,它是创建项目原始主机的elf文件位置。
    1.2.png 将这条绝对路径修改为相对路径File.Open(“../Output/Debug/Exe/ Ozone_Portable_Project_Example.elf”); 保存文件并使用Ozone打开。
    2.jpg Ozone提示找不到main.c文件,这是因为语句“Project.AddPathSubstitute”有问题。
    2.2.png 修改为Project.AddPathSubstitute ("C:/ Users /Nino /Documents /SEGGER Embedded Studio for ARM Projects/Ozone_Portable_Project_Example","$(ProjectDir)/.."); 保存项目文件并再次使用Ozone打开。
    3.jpg 可以看到在Ozone中正确显示源文件。
    通过修改*.jdebug的方式,可以非常容易的实现项目可移植。

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-24 21:52 , Processed in 0.116037 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.