当前位置: 首页 > web >正文

如何使用ozone调试elf文件?

首先我们知道elf是由GCC编译器生成,我们首先在linux下make生成elf文件,没报错就是编译成功。

然后打开ozone,前面步骤个axf一样操作

下一步,我们先随便在一个地方保存工程,这样才能进入.jdebug文件中编辑、

现在肯定是打不开的,但是我们可以注意到,elf文件中有他自己在Linux先的保存位置,就是因为这个位置和现实中的位置对应不上导致的。

我们这一步打开编译文件 

然后修改路径,这样就搞定了

解释下原理,

linux环境可以根据起始查找,但是我们的ozone是在windows下的,不是home起始,他也不知道home在哪,需要前面更多的起始路径

 Project.AddPathSubstitute 里面第一个地址和后面地址有公共文件夹,这样才能完成映射

他就是根据第二个地址和第一个地址共同的文件夹来合成一个最开头的文件夹,然后根据这里的路径来寻找本地文件

例子一:

elf文件的路径保存为:/home/action/STM32F407/boot/main.c

我们实际保存文件路径为C:/Users/pipig/Documents/WeChat Files/wxid_o83ttp2a6xyg22/FileStorage/File/2025-07/STM32F407/boot/boot.elf

我们需要这么改:

void OnProjectLoad (void) {
//
// Dialog-generated settings
//
Project.AddPathSubstitute ("/home/action/STM32F407/", "C:/Users/pipig/Documents/WeChat Files/wxid_o83ttp2a6xyg22/FileStorage/File/2025-07/STM32F407/");
Project.AddPathSubstitute ("c:/users/pipig/desktop", "$(ProjectDir)");
Project.SetDevice ("STM32F407VE");
Project.SetHostIF ("USB", "");
Project.SetTargetIF ("SWD");
Project.SetTIFSpeed ("4 MHz");
Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M4F.svd");
Project.AddSvdFile ("$(InstallDir)/Config/Peripherals/STM32F407IG.svd");
//
// User settings
//
File.Open ("C:/Users/pipig/Documents/WeChat Files/wxid_o83ttp2a6xyg22/FileStorage/File/2025-07/STM32F407/boot/boot.elf");
}

保证两个参数最后为相同地址,这样ozone就会拥有windows下文件的前缀地址。

例子二:

elf文件的路径保存为:/home/wsl/stm32f4_boot/boot/main.c

我们实际保存文件路径为://wsl.localhost/Ubuntu-22.04/home/wsl/stm32f4_boot/output/xcplus_boot/boot.elf

我们需要这么改:

void OnProjectLoad (void) {
//
// Dialog-generated settings
//
Project.AddPathSubstitute ("/home/wsl/stm32f4_boot/", "//wsl.localhost/Ubuntu-22.04/home/wsl/stm32f4_boot/");
Project.AddPathSubstitute ("c:/users/pipig/desktop", "$(ProjectDir)");
Project.SetDevice ("STM32F407VE");
Project.SetHostIF ("USB", "");
Project.SetTargetIF ("SWD");
Project.SetTIFSpeed ("4 MHz");
Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M4F.svd");
Project.AddSvdFile ("$(InstallDir)/Config/Peripherals/STM32F407IG.svd");
//
// User settings
//
File.Open ("//wsl.localhost/Ubuntu-22.04/home/wsl/stm32f4_boot/output/xcplus_boot/boot.elf");
}

特例:有些可能需要elf同层文件夹中又bin文件才能映射,如果以上无法解决,可以在elf文件夹下生成bin文件试试

http://www.xdnf.cn/news/16552.html

相关文章:

  • Dify 本地化部署深度解析与实战指南
  • LangChain实现RAG
  • 力扣 hot100 Day57
  • 第四科学范式(数据密集型科学):科学发现的新范式
  • Qt C++动态库SDK在Visual Studio 2022使用(C++/C#版本)
  • IIS发布.NET9 API 常见报错汇总
  • Java面试实战:从基础到架构的全方位技术交锋
  • add新增管理员功能、BaseController类的简介--------示例OJ
  • PDF转图片实用指南:如何批量高效转换?
  • AI入门学习-模型评估示例讲解
  • Deja Vu: 利用上下文稀疏性提升大语言模型推理效率
  • 【java】 IntelliJ IDEA高效编程设置指南
  • Day06–哈希表–242. 有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
  • EMCCD相机与电可调变焦透镜的同步控制系统设计与实现
  • 基于Matlab自适应阈值分割算法的图像处理研究
  • 《Java 程序设计》第 7 章 - 继承与多态
  • 嵌入式学习日志————对射式红外传感器计次
  • 高速采集卡FPGA设计方案及代码
  • 【测试报告】博客系统(Java+Selenium+Jmeter自动化测试)
  • maven命令详解
  • Element表格单元格类名动态设置
  • 可控、安全、可集成:安防RTSP|RTMP视频播放模块工程实践参考
  • Android基础(一) 运行HelloWorld
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ipywidgets’问题
  • 区块链共识机制与联邦学习
  • 《杜甫传》读书笔记与经典摘要(三)流亡与走向人民
  • Java面试题及详细答案120道之(081-100)
  • 电商项目_核心业务_数据归档
  • 计算机网络:(十二)传输层(上)运输层协议概述
  • 【测试报告】玄机抽奖系统(Java+Selenium+Jmeter自动化测试)