2.数组溢出 这类问题一般在通信中,接受数据的时候,特别是长度不定的时候 比如协议为
3.使用了非法的指针 ,比如空指针 ,编译对的 但是运行就错了 u8 *p = null; *p = 1;
4.使用 OS_ENTER_CRITICAL(); 使用了 OS_ENTER_CRITICAL(); 却忘了OS_EXIT_CRITICAL(); 退出临界区 特别是在这个函数OS_ENTER_CRITICAL();
常见的就上面几种了,说说硬件异常了 怎么来发现,这个才是主要的 举个例子: a.仿真,运行程序的时候点红色X进入异常
b.调出堆栈窗口,也就是黑匣子
c.查找问题
d.找出出错的函数
e.解决问题
f
当然网上也有很多,检查寄存器LR SP等地址 来反推出最后运行的汇编函数调用地址的,但是肯定没有上面的直观。