项目场景:
使用STM32CUBEIDE调试代码过程中,会出现死到HardFault_Handler函数中,无意间发现一种ide的调试方法
问题描述
程序崩溃导致程序死机
原因分析:
HardFault_Handler硬件中断,是单片机中经常出现的一种异常问题。出现 HardFault_Handler 的原因主要有3类:
内存溢出或者访问越界:由于程序中申请的内存超出了系统的可用内存,或者申请的内存在使用过程中未被正确释放。这种情况会导致系统无法为其他请求分配足够的内存,甚至可能导致系统崩溃。访问了数组范围之外的内存位置或使用野指针,也会导致HardFault_Handler错误。
堆栈溢出:通常发生在函数调用或数组访问时。当函数内部的数组过大,或者递归调用层次太深时,就可能发生堆栈越界。
硬件故障:如果硬件出现故障,例如电源干扰、连接器故障或传感器故障等,可能会导致HardFault_Handler错误。
解决方案:
IDE带有故障分析器,不用像之前一样查找主堆栈指针再去查找
1.在HardFault_Handler中添加断点
2.添加故障分析器视图,如图
然后等待程序崩溃
3.故障分析器里面红色的代表故障原因
4.点击下方寄存器lr或者pc可以直接跳转到故障代码。我的故障是除零了。