本帖最后由 hanfei08131106 于 2018-6-29 13:36 编辑
第一次遇到这种题,不知道从何处下手,周末回家的时候想起来,去度娘搜索一下,果然很多人遇到了同样的问题。
看了几个帖子之后,对应着IAR熟悉了一下锁定流程,最后问题排除。
具体步骤如下:
1.在HardFault_Handler函数内打断点,如下图所示:
2.程序仿真运行,让问题再现。等到进入断点之后,打开view->call stack。如下图所示:
根据上图判断,是内存释放出现了问题,出现了0地址和非法地址,根据函数锁定位置,发现
是由于指针在未初始化的情况下为非空,而此时指针所在的消息队列未收到任何消息,从而
释放了该指针导致。
3.同样的调试手段使用在了操作系统死掉的情况下调试,同样暂停仿真,去查看call stack中程
序的上下文,迅速锁定问题点。
仅以此文分享一下调试技巧问题,如果感觉小儿科,请勿拍砖。谢谢!
|