用了挺久的M4(nxp的),但是发现有一个问题挺让人讨厌的,就是程序死机了无法判断死机位置,之前看到一篇文章是通过查看SP LR等寄存器,看堆栈内容来查找。还要看memory里的地址再找函数地址,再看汇编代码。觉得很麻烦。ARM7内核还好判断一些(M3内核未验证,应该一样的知识M4多了个FPU)。
偶然一次死机(数组越界)。发现在Call Stack居然直接保存了死机的函数名称和地址。非常滴方便啊,哈哈。直接右键calle stack就能看到函数死在哪儿了。网上很少看到关于死机判断位置的文章。不知道各位的程序是不死机呢?还是早就知道了,个人觉得挺好的所以分享了。具体请看图!
给0地址赋值让其死机:
int *a = 0;
*a = 3;
图1
死在DOWork函数里
图2 右键点击Show Callee Code
图3
位置就在这里,三角箭头那儿 上面就是给0地址赋值的地方,汇编代码显示是在调用 Cmd Parse函数前发生的错误。
时间: 2024-10-14 13:42:30