硬汉嵌入式论坛

 找回密码
 立即注册
查看: 184|回复: 11
收起左侧

[RTOS Trace] 加强H7-TOOL的RTOS Trace中elf文件解析能力,特别是dwarf-5格式的调试信息解析(2025-07-01)

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116739
QQ
发表于 3 天前 | 显示全部楼层 |阅读模式
当前的现状是这样

1、早期刚推出RTOS Trace功能的时候,MDK生成的axf,IAR生成的out和各种GCC类软件生成的elf都可以正常解析,特别是elf格式,测试了几款IDE均正常。但是随着GCC相关生态不断迭代更新,已经开始部分elf文件无法正常解析
     不仅是TOOL,现在没有及时跟进的解析类软件,解析最新的GCC生成的elf文件也会存在些问题。而IAR和MDK生成的可执行文件解析没有这样的问题。
2、经过这几天的研究,发现了一个最重要的变化,当前最新版本的MDK AC5生成的axf可执行文件调试信息是还是dwarf-3,  AC6生成的是dwarf-4,  而IAR也主要是以dwarf-4为主。只有GCC类的新版软件基本都切换到dwarf-5
     这就导致了TOOL解析这类文件解析一部分直接就中断了,因为不支持dwarf-5的一些格式解析。

所以下一步准备支持下dwarf-5的解析,准备做个程序,自己检索了,直接使用nm,readelf,objdump生的debug info信息里面的变量信息,特别是结构体变量,非常不直观,需要用户手动关联下自己的结构体成员和地址偏移,程序大了,这个信息可以上百万行。

下载 (10).png

3、dwarf-5信息文档

https://dwarfstd.org/Download.php

1234.png

4、之前花了大量时间研究的原创RTOS Trace功能,要持续的更新下去,dwarf-5格式的elf文件就是首先要解决的问题










回复

使用道具 举报

19

主题

268

回帖

325

积分

高级会员

积分
325
发表于 3 天前 | 显示全部楼层
我试的时候会报“系统找不到指定的路径。”,不知道什么原因;
开发环境:cubemxide1.7.1(没办法,其他的要钱)
生成文件:  elf
h7tools版本:V2.2.9
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116739
QQ
 楼主| 发表于 3 天前 | 显示全部楼层
xieyang__ 发表于 2025-7-1 18:31
我试的时候会报“系统找不到指定的路径。”,不知道什么原因;
开发环境:cubemxide1.7.1(没办法,其他的 ...

当前我们用的MDK的解析方案,MDK必须安装(只是安装,不需要工程使用),如果安装了,还找不到,指定下路径即可。
如果不允许安装MDK,等我们后续更新,准备上基于ARM EABI方案,这个免费。实际上这次加强,也是要解决下这个问题。





请务必安装了MDK,如果安装了还提示,这个是未找到路径,解决办法是手动添加路径即可






回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116739
QQ
 楼主| 发表于 3 天前 | 显示全部楼层
邪门了,测试STM32CubeIDE V1.18的DWARF-5,C17 如下配置可以正常解析

GNU C11 13.3.1 20240614 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -march=armv7e-m+fp -g3 -O0 -std=gnu11 -ffunction-sections -fdata-sections -fstack-usage -fcyclomatic-complexity

客户发的为什么不行,配置成客户完全一样的配置,也可以正常解析




回复

使用道具 举报

2

主题

25

回帖

31

积分

新手上路

积分
31
发表于 前天 13:34 | 显示全部楼层
老大,RT-Thread还有没有可能支持了?
回复

使用道具 举报

19

主题

268

回帖

325

积分

高级会员

积分
325
发表于 前天 13:38 | 显示全部楼层
eric2013 发表于 2025-7-1 18:59
邪门了,测试STM32CubeIDE V1.18的DWARF-5,C17 如下配置可以正常解析

GNU C11 13.3.1 20240614 -mcpu=c ...

cubeIDEV1.18停坑的,V1.17的LD文件V18会出现链接错误,导致bin文件特别大
回复

使用道具 举报

19

主题

268

回帖

325

积分

高级会员

积分
325
发表于 前天 13:38 | 显示全部楼层
eric2013 发表于 2025-7-1 18:50
当前我们用的MDK的解析方案,MDK必须安装(只是安装,不需要工程使用),如果安装了,还找不到,指定下路 ...

期待更新
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116739
QQ
 楼主| 发表于 前天 15:28 | 显示全部楼层

当前版本,解析你的elf应该完全没问题,不用升级,我测试了最新的几个CubeIDE版本都正常。

注册一个正版的序列号即可,任意厂家的一款正版序列号。

当前免费使用正版MDK5/MDK6的授权厂家以及授权方法
https://www.armbbs.cn/forum.php? ... d=128476&fromuid=58
(出处: 硬汉嵌入式论坛)


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116739
QQ
 楼主| 发表于 前天 15:32 | 显示全部楼层
xieyang__ 发表于 2025-7-2 13:38
cubeIDEV1.18停坑的,V1.17的LD文件V18会出现链接错误,导致bin文件特别大

bin大没关系,我TOOL可以自动分割,转治bin大的场景。

H7-TOOL脱机烧录大范围不连续hex文件的自动分割范围设置方法(2025-06-05)
https://www.armbbs.cn/forum.php? ... d=128687&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

19

主题

268

回帖

325

积分

高级会员

积分
325
发表于 前天 17:35 | 显示全部楼层
eric2013 发表于 2025-7-2 15:28
当前版本,解析你的elf应该完全没问题,不用升级,我测试了最新的几个CubeIDE版本都正常。

注册一个正 ...

回复

使用道具 举报

1

主题

9

回帖

12

积分

新手上路

积分
12
发表于 前天 19:32 | 显示全部楼层
老大,解析elf文件的代码方便共享吗,我自己用Python写的总是无法正确解析结构体内部变量的地址
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116739
QQ
 楼主| 发表于 昨天 07:50 | 显示全部楼层
摸鱼校尉 发表于 2025-7-2 19:32
老大,解析elf文件的代码方便共享吗,我自己用Python写的总是无法正确解析结构体内部变量的地址

python有专门的解析工具https://github.com/eliben/pyelftools
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-7-4 11:15 , Processed in 0.467316 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表