搜索
bottom↓
回复: 60

分享HardFault分析软件,,完善版

  [复制链接]

出0入25汤圆

发表于 2019-2-20 23:18:28 | 显示全部楼层 |阅读模式

之前在论坛分享过一个软件:分享一个HardFault分析软件,,初始版本

最近使用完善了下,重新分享一下 ,,主要完善内容有:
1、添加HardFault原因寄存器解析
2、不再依赖.map文件,,只需指定反汇编文件即可
3、添加对GCC反汇编文件的支持,,当前支持Keil MDK和GCC两种反汇编文件,,以后会添加IAR格式支持
4、可指定分析哪个栈,,以及要分析栈的大小
5、将对反汇编文件的分析结果打印出来,,显示函数间的调用关系

执行效果:


函数调用关系:



源代码:https://github.com/XIVN1987/JHFView

打包后的exe文件:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入93汤圆

发表于 2019-2-20 23:22:34 | 显示全部楼层
这个厉害啊

出0入4汤圆

发表于 2019-2-20 23:53:08 | 显示全部楼层
HardFault分析软件,  顶你!

出0入0汤圆

发表于 2019-2-21 00:16:20 | 显示全部楼层
HardFault 是个技术活,顶

出0入16汤圆

发表于 2019-2-21 08:31:42 | 显示全部楼层
用M0的死心吧,这种方法对M0没用的

出0入0汤圆

发表于 2019-2-21 08:37:00 | 显示全部楼层
多谢楼主,这个好用的话,可以省很多时间。

出0入0汤圆

发表于 2019-2-21 08:50:11 | 显示全部楼层
那个AXF文件好像是C和汇编一起看的,   用那个文件解析是不是更能精准显示在哪一行出问题更直观。

出425入0汤圆

发表于 2019-2-21 08:50:29 | 显示全部楼层
我时不时会被Hardfault骚扰一下。等你的IAR版本。

出0入0汤圆

发表于 2019-2-21 08:52:08 | 显示全部楼层
必须赞一下,楼主,你的Jlink的DLL文件里面函数是怎么知道的,比较好奇.

出0入0汤圆

发表于 2019-2-21 09:06:14 | 显示全部楼层
强烈支持楼主,很有用的工具!

出0入25汤圆

 楼主| 发表于 2019-2-21 09:08:26 来自手机 | 显示全部楼层
Elex 发表于 2019-2-21 08:31
用M0的死心吧,这种方法对M0没用的

只是没有故障原因寄存器而已,,call stack还是可以分析出来的

出0入0汤圆

发表于 2019-2-21 09:12:48 | 显示全部楼层
这个比较实用,谢谢分享!

出0入25汤圆

 楼主| 发表于 2019-2-21 09:13:29 来自手机 | 显示全部楼层
huangqi412 发表于 2019-2-21 08:50
那个AXF文件好像是C和汇编一起看的,   用那个文件解析是不是更能精准显示在哪一行出问题更直观。 ...

我也是想用elf文件分析的,毕竟反汇编文件每个编译器格式都不一样,,而elf是标准格式,,不过没找到elf文件解析出函数调用关系的方法,所以只能用反汇编文件了
现在这个也能找出出问题的所在行,,把打印出来的指令地址在反汇编文件里对照一下就知道对应c代码的哪一行了

出0入25汤圆

 楼主| 发表于 2019-2-21 09:15:35 来自手机 | 显示全部楼层
596142041 发表于 2019-2-21 08:52
必须赞一下,楼主,你的Jlink的DLL文件里面函数是怎么知道的,比较好奇.

Google搜索Python jlink,,github上有很多现成的库可以参考,,功能最强大库的可能是pylink

出0入16汤圆

发表于 2019-2-21 10:00:43 | 显示全部楼层
XIVN1987 发表于 2019-2-21 09:08
只是没有故障原因寄存器而已,,call stack还是可以分析出来的

不知道能否定位具体位置?如果只是找出函数,我一般直接在hardfault设个断点看call stack。
其实hardfault的原因就那么几种,多注意一下就很少发生hardfault的情况了。
我曾遇到过的hardfault的原因大概有下面一些:
1,除数为0
2,操作内存/数组越界
3,堆栈溢出
4,操作非法地址/未定义的地址/没有外设的地址
5,地址没有按4字节对齐写flash

出0入0汤圆

发表于 2019-2-21 10:04:13 | 显示全部楼层
先收藏备用

出0入0汤圆

发表于 2019-2-21 10:06:34 | 显示全部楼层
这个非常非常的好

出0入0汤圆

发表于 2019-2-21 10:16:26 | 显示全部楼层
Elex 发表于 2019-2-21 10:00
不知道能否定位具体位置?如果只是找出函数,我一般直接在hardfault设个断点看call stack。
其实hardfaul ...

这个总结非常非常的好

出0入0汤圆

发表于 2019-2-21 10:17:17 | 显示全部楼层
如果是用elf就更好了

出0入0汤圆

发表于 2019-2-21 10:21:01 | 显示全部楼层
XIVN1987 发表于 2019-2-21 09:13
我也是想用elf文件分析的,毕竟反汇编文件每个编译器格式都不一样,,而elf是标准格式,,不过没找到elf ...

不同工具下生成反汇编怎么弄得。   
调用关系是不是将栈递归查几层,每层指出行数就行。

出0入0汤圆

发表于 2019-2-21 10:27:48 | 显示全部楼层
这个可以,谢谢分享

出0入0汤圆

发表于 2019-2-21 10:31:35 | 显示全部楼层
上次下载了还没用起来,又更新了,看来我很久没HardFault了~[偷笑]

出0入0汤圆

发表于 2019-2-21 10:37:57 | 显示全部楼层
HardFault分析软件 支持楼主。

出0入25汤圆

 楼主| 发表于 2019-2-21 11:03:09 来自手机 | 显示全部楼层
Elex 发表于 2019-2-21 10:00
不知道能否定位具体位置?如果只是找出函数,我一般直接在hardfault设个断点看call stack。
其实hardfaul ...

可以定位具体位置,,比如顶楼的例子,故障发生的指令地址是0x20C,,在反汇编文件中找一下这个指令地址对应的源码行就可以了

出0入0汤圆

发表于 2019-2-21 11:03:42 | 显示全部楼层
大神作品,mark一下。

出0入0汤圆

发表于 2019-2-21 11:18:03 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2019-2-21 11:36:30 | 显示全部楼层
新版本的IAR已经内嵌了HardFault分析软件,但显示的内容可能没楼主做的那么详细。

出0入90汤圆

发表于 2019-2-21 14:04:37 | 显示全部楼层
看起来好像有些用啊。

出0入0汤圆

发表于 2019-2-21 15:18:19 | 显示全部楼层
这个要支持,偶尔会碰到,有了调试神器就不用愁了

出0入25汤圆

 楼主| 发表于 2019-2-21 19:11:05 | 显示全部楼层
huangqi412 发表于 2019-2-21 10:21
不同工具下生成反汇编怎么弄得。   
调用关系是不是将栈递归查几层,每层指出行数就行。
...

Keil MDK:fromelf --text -a -c -o "$L@L.dis" "#L"


GCC:使用“objdump -d”命令,比如:
  1. $(BUILD)/micropython.elf: $(OBJ)
  2.         $(ECHO) "LINK $@"
  3.         $(Q)$(CC) -o $@ $(LDFLAGS) $(OBJ) $(LIBS)
  4.         $(CROSS_COMPILE)objdump -d $@ > $(BUILD)/micropython.elf.dis
  5.         $(Q)$(SIZE) $@
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-2-21 20:01:31 | 显示全部楼层
巨牛无比,感谢楼主分享!

出0入0汤圆

发表于 2019-2-21 20:07:12 | 显示全部楼层
楼主相当深入了

出0入0汤圆

发表于 2019-2-21 20:08:08 | 显示全部楼层
不是一般的厉害

出0入0汤圆

发表于 2019-2-21 22:19:11 | 显示全部楼层
我现在刚好有个问题,从loader跳转到app,发生了default isr错误。有时好用,不知道能不能分析出来

出0入0汤圆

发表于 2019-2-21 22:25:21 | 显示全部楼层
牛逼了,佩服,点赞,收藏

出0入0汤圆

发表于 2019-2-22 08:47:29 | 显示全部楼层
收藏了,感谢分享。遇到hardfault几次,就蒙了。

出0入0汤圆

发表于 2019-2-27 11:21:58 | 显示全部楼层
mark一下:HardFault分析软件完善版

出0入0汤圆

发表于 2019-2-27 12:53:30 | 显示全部楼层
留名先,等会再看

出0入0汤圆

发表于 2019-2-27 18:18:12 | 显示全部楼层
有时候我会加个return,打断点来定位,return不了的就得看call stack

出0入0汤圆

发表于 2019-2-28 21:31:39 | 显示全部楼层
收藏了,感谢分享!

出0入0汤圆

发表于 2019-2-28 23:09:56 | 显示全部楼层
这个用处大,大神牛啊,谢谢分享。

出0入0汤圆

发表于 2019-2-28 23:36:50 | 显示全部楼层
不錯~~~~~~~~~~~~~~~~~~~

出0入0汤圆

发表于 2019-3-1 08:36:41 | 显示全部楼层
这个是好东西,谢谢分享

出0入0汤圆

发表于 2019-3-1 08:45:17 | 显示全部楼层
牛!谢谢分享~~~

出0入0汤圆

发表于 2019-3-1 09:59:25 | 显示全部楼层
谢楼主分享!

出0入0汤圆

发表于 2019-3-1 10:02:59 | 显示全部楼层
这个是好东西,谢谢分享

出0入4汤圆

发表于 2019-3-5 15:50:03 | 显示全部楼层
请教楼主,eclipse怎么设置?反汇编文件是不是要装所谓的反编译工具,不过我看反编译和反汇编不一回事

出0入25汤圆

 楼主| 发表于 2019-3-5 17:38:46 | 显示全部楼层
ZL_electric 发表于 2019-3-5 15:50
请教楼主,eclipse怎么设置?反汇编文件是不是要装所谓的反编译工具,不过我看反编译和反汇编不一回事 ...


GCC编译器的话,可以用“objdump -d”生成反汇编

当前支持Keil MDK和GCC的反汇编格式,,

出0入0汤圆

发表于 2019-3-5 18:00:34 | 显示全部楼层
这个可以,谢谢分享

出0入0汤圆

发表于 2019-3-5 18:49:53 | 显示全部楼层
牛,下载了,感谢

出0入0汤圆

发表于 2020-11-20 06:09:45 | 显示全部楼层
厉害,感谢分享

出0入0汤圆

发表于 2020-11-23 21:10:15 | 显示全部楼层
谢谢分享!!!

出0入0汤圆

发表于 2020-12-1 11:26:56 | 显示全部楼层
解压失败,麻烦看看?谢谢

出0入0汤圆

发表于 2020-12-1 14:06:34 | 显示全部楼层
可以使用了,谢谢。下载后重命名1,2反了

出0入0汤圆

发表于 2020-12-11 11:51:17 | 显示全部楼层
感谢分享,学习下

出0入10汤圆

发表于 2020-12-12 09:24:10 来自手机 | 显示全部楼层
感谢分享!

出0入0汤圆

发表于 2020-12-12 22:45:51 来自手机 | 显示全部楼层
学习一下大牛

出0入0汤圆

发表于 2021-4-29 00:51:12 来自手机 | 显示全部楼层
好东西,mark一下

出0入10汤圆

发表于 2021-4-29 08:14:18 来自手机 | 显示全部楼层
感谢分享!

出0入0汤圆

发表于 2021-4-29 14:32:31 | 显示全部楼层
这个的确非常棒的功能,非常值得
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 17:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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