搜索
bottom↓
回复: 10

发生hard fault如何找出错语句(大家都觉得很难解决的问题)

[复制链接]

出0入0汤圆

发表于 2012-11-24 09:27:51 | 显示全部楼层 |阅读模式
相信在调试程序时,经常会发生hard fault。用什么方法可以找到具体出问题的地方呢?ARM cortex-m3权威指南上给出了一个找出问题的PC的流程图。当我找到那个PC地址时,我发现基本算是没有用。比如说,找到的PC=0x10007264,这是LPC1768的内存地址啊,这有什么用呢?

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

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

出0入0汤圆

发表于 2012-11-24 09:52:01 | 显示全部楼层
如果这个没用,那确实不知道哪个有用了反汇编窗口上不都标着语句地址的么....

出0入0汤圆

 楼主| 发表于 2012-11-24 17:36:57 | 显示全部楼层
PC=0x10007264这个地址不是程序地址,请问大侠,怎么能够通过他找到是哪个地方的程序出问题了?

出0入0汤圆

发表于 2012-11-24 18:17:33 | 显示全部楼层
单步调试,看到哪里就跳到hard falut

出0入0汤圆

发表于 2012-11-24 18:17:51 | 显示全部楼层
我一直都是用这个方法

出0入0汤圆

 楼主| 发表于 2012-11-24 18:26:58 | 显示全部楼层
你这办法行是行,就是万一那个hard fault要老半天才出现,那不就很费劲?还是等hard fault出来后,再回转去找出问题的语句简单吧。

出0入0汤圆

发表于 2012-11-24 22:31:02 来自手机 | 显示全部楼层
leecny2012 发表于 2012-11-24 17:36
PC=0x10007264这个地址不是程序地址,请问大侠,怎么能够通过他找到是哪个地方的程序出问题了? ...

那你觉得pc指针怎么会跑到非程序区的。。。。。确认反推算对了?这可是偶数地址,thumb模式不可能在偶数地址上的。。。。

出0入0汤圆

发表于 2012-11-24 22:34:43 | 显示全部楼层
一般都是堆栈溢出,数组越界、野指针访问等操作引起的

出0入0汤圆

 楼主| 发表于 2012-11-24 23:31:51 | 显示全部楼层



这是又一次死机的截图。按照权威指南里写的,LR.2=0,则是在MSP里。PC数据存放在0x10007258-0x24=0x10007234,在0x10007234处的数据是0,也就是说PC指向了0。PC怎么会指向0呢,不理解。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-11-24 23:47:39 | 显示全部楼层
单步调试,看跑到哪里出错,然后就看程序了,特别是使用指针或者涉及运算的。我是这么解决的

出0入0汤圆

 楼主| 发表于 2012-11-25 08:20:48 | 显示全部楼层
单步方法只能调经常或者常在的错误,向我这种运行一段时间才出错的问题,那要单步到什么时候?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 00:02

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

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