keil-浅谈遇到HardFault_Handler时,如何调试


遇到HardFault_Handler时,往往不知所措,一般情况是心态崩了,闲话少说,如何解决问题才是关键!

  第一种办法是:keil在debug的时候,有call stack窗口,它的作用是记录程序进出堆栈的过程,通过查看里面的内容,找到死机前函数的调用过程,往往问题就在这附近!但是有的时候调出call stack窗口时,里面除了HardFault_Handler没有别的(是不是心态崩了,刚刚告诉你一个救命稻草,啪,稻草断了)。为什么没有东西,我现在也不太清楚,但是我尝试过换个jlink、重新装个新版keil都不起作用,大家知道的话可以给我留言!这种方法不行,可以试试第二种方法。

  第二种方法是:查看register,sp,调出memory1........这方法尝试过,但是没有深入理解精髓,就不细谈了,详细操作请查看他人文章吧

  第三种方法是:排除法,一点点注释代码,直到注释到它后,程序正常运行了,就知道是它出了问题,这个需要耐心,我在调试的过程中,函数嵌套比较多,我就一层一层排查,最终即使你在在怎么不相信会是它出了问题,那就是它出了问题!这就是反向思维,按照正常的逻辑(我们以为正确的),到最后却是错了,那你怎么可能通过正向思维找到问题呢!!!

未完待续...........

调试是们学问,找出发现的问题,需要耐心,保持心态,这是一门内功,慢慢领悟吧!