请教香版如何快速解决hardfaultexception问题

[复制链接]
6365|13
 楼主| xsq5360 发表于 2010-11-11 14:58 | 显示全部楼层 |阅读模式
本帖最后由 xsq5360 于 2010-11-11 16:02 编辑

在某次调试时发现程序运行一段时间后系统会进入hardfaultexception,看了论坛里很多相关的帖子,大致有所了解
想请教的是,出现这种情况时如何调试找到问题的根源?怎样获知程序运行到哪一步后发生错误进入hardfaultexception中断?如何能看出进入该中断前程序运行的过程?
未命名.JPG
香水城 发表于 2010-11-11 15:03 | 显示全部楼层
在hardfaultexception处设断点,调试停在断点处后看堆栈,一般都能找到从哪里进入的。
 楼主| xsq5360 发表于 2010-11-11 15:15 | 显示全部楼层
本帖最后由 xsq5360 于 2010-11-11 15:21 编辑

2# 香水城

按照你说的操作了下,但查看call stack,内容就如我第一帖中的附图,看不出是从哪里进入到该中断
还是我没理解对?
仔细看下了程序,发现有处蓝色光标,附图中的蓝色光标代表什么意思?
蓝色光标处?.JPG
香水城 发表于 2010-11-11 15:46 | 显示全部楼层
蓝色光标一般表示程序指针指向的地方,但要看什么时候出现的。
 楼主| xsq5360 发表于 2010-11-11 16:00 | 显示全部楼层
本帖最后由 xsq5360 于 2010-11-11 16:02 编辑

4# 香水城

这次最近一次调试的截图,堆栈中出现了不同的函数,具体应该怎样分析呢?
新堆栈截图.JPG
香水城 发表于 2010-11-11 16:04 | 显示全部楼层
分析堆栈中出现的最后一个函数,从PC指针指向的位置查,看看哪里有溢出等问题。
 楼主| xsq5360 发表于 2010-11-12 10:12 | 显示全部楼层
6# 香水城
我还是有点不大明白
如图中标注所示:
1处:
显示caller是0x08100670,但是查到该处代码是MOVS r0,r0
这说明什么问题?
2处:
程序进入hardfaultexception死循环时通用寄存器值如图,有没有异常?能说明什么问题?
3处:
堆栈中显示函数调用关系,
堆栈调用截图1标注.JPG
vigia 发表于 2010-11-12 10:22 | 显示全部楼层
在出现Hardfault之后,再去看CallStack是没有意义的,CallStack记录的已经是出错以后的地址了。

所以,应该是根据CoreRegister中的R13(SP),找到当前使用的堆栈地址,通过该地址直接查看堆栈中保存的内容。堆栈中应该保存有最后一次的函数调用地址,和一些变量的值,仔细分辨,0x08开头的就是函数调用地址,这是最后一次正确的函数调用地址。

你可以在这个函数处加一个断点,然后再单步调试,你就会发现是哪一句指令导致的HardFault。
 楼主| xsq5360 发表于 2010-11-12 10:52 | 显示全部楼层
谢谢vigia指点!!
你在最后提到断电调试,可是我现在的情况是一开始测试是正常的,经过一段时间后才发生该故障,如果我一开始设断点,程序仍是正常运行的,故障点就出不来了。
vigia 发表于 2010-11-12 11:01 | 显示全部楼层
首先,你仍然可以用我说的方法,把出问题的地方大致定位出来,然后仔细检查相关代码,运气好的话,你就能发现问题。

要是运气不好,就多加测试手段了,比如在相关地方通过I/O口输出波形,能进一步缩小问题范围,或者记录所有相关变量的值,特别是数组和指针变量的值,出了问题就去检查所有这些保存下来的数值是否有可疑的地方。调试办法很多,自己想想吧。
 楼主| xsq5360 发表于 2010-11-12 11:10 | 显示全部楼层
10# vigia
多谢vigia大侠指引!我试试。
 楼主| xsq5360 发表于 2010-11-12 16:51 | 显示全部楼层
按照香主和vigia大侠的思路进行调试,还是没发现故障点。
通过堆栈查看寄存器值。
1处:先前PC指针为0x08004471,这个地址好像有点奇怪,在汇编代码窗口中定位到该处代码,入口应该是0x08004470?
2处:先前LR寄存器值,定位到该处,汇编代码为MOVS r0,r0
堆栈内容4标注.JPG
aaa2742 发表于 2011-4-10 13:51 | 显示全部楼层
有没有按照cortex-m3权威指南上说的方法调试的,不过不知其所以然,还请大家指教之类问题
wsxiong 发表于 2015-5-7 11:40 | 显示全部楼层
https://bbs.21ic.com/icview-205081-1-1.html

你好 这个问题解决了么 我也碰到这个问题 请麻烦你指导指导
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

57

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部