cortex-M3/M4死机位置判断

用了挺久的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

cortex-M3/M4死机位置判断的相关文章

服务器死机故障判断以及处理办法

服务器死机故障比较难以判断,经常碰到客户一段时间没有重启自动死机了也就是假死了!一般分为软件和硬件两个方面: 1.软件故障:首先查看操作系统的系统日志,可以通过系统日志来判断部分造成死机的原因;电脑病毒的原因;系统软件的bug或漏洞造成的死机,这种故障需要在判断硬件无故障后做出,而且需要软件提供商提供帮助;软件使用不当或系统工作压力过大,可以请客户适当降低服务器的工作压力来看看是否能够解决 2.硬件故障:硬件冲突;电源故障或电源供电不足,可以通过对比计算服务器电源所有的负载功率的值来作出判断;硬

调试死机问题时可根据死机地址快速判断问题出在栈区还是堆区

先看一段会造成死机的代码及其运行结果: #include <iostream> using std::cout; using std::endl; using std::ostream; class Tree {   int height; public:   Tree(int treeHeight) : height(treeHeight) {     cout << __func__ << "(), this = " << this 

交换机死机,导致ceph ( requests are blocked ) 异常解决方法

问题描述: 万兆交换机死机后,导致在交换机上的ceph 的cluster网络会中断,用户正在对数据块的访问没有完成导致请求被blocked,同时部分pg会处于不同步状态,因此交换机重启后,通过ceph health会发现ceph集群不在OK 状态 health HEALTH_ERR 1 pgs inconsistent; 1 pgs repair; 2 requests are blocked > 32 sec; 1 scrub errorspg 6.89 is active+clean+inc

[转发]dsdt解决睡眠唤醒死机

登录 注册 首页 热门话题 最新发布 简单模式 详细模式 dsdt解决睡眠唤醒死机 Leave a reply 首先,感谢x5115x提供了一个相对比较完整的THINKPAD T410在MAC下的DSDT修改的详细教程!使得很多略有程序代码经验的T410使用者能够自己动手修改DSDT. 在x5115x的帖子中,提到了以下几个修改:1)添加DGTP:2)修改LPC,支持原生电源管理:3)修改RTC,防止CMOS重置:4)添加显卡代码(我用了少量的代码+变色龙自动侦测,使得机器可以支持VGA的镜像输

APP测试点总结(功能,交互,死机崩溃状态分析,容易出错的检查点)

最近涉足APP端测试,常见检查点总结如下: 一.业务方面: 1.  注册(无效数据剔除),登录(语音和短信验证码),第三方登录(微信,微博,qq),忘记密码处理,注册   (登录后身份判断校验):账号互踢(同一时间一个账号只能在一台设备上登录) 2.tab切换,滑动,标题显示 3.项目列表显示:上下滑动加载(是不是会重复加载数据):显示的条数是否正确:格式,标签是否正确: 消息列表显示:title显示:头像显示处理:时间显示规则:下拉刷新最新消息:未读消息显示:标记为已读设置 4.搜索:智能提示

android 动态库死机调试方法 .

原地址:http://blog.csdn.net/andyhuabing/article/details/7074979 这两种方法都不是我发明了,都是网上一些高手公共出来的调试方法,无奈找不到出处的地方了,所以就在此总结一下,以方便android下的调试: 简要说明: android系统中调试Java非常容易,一般遇到错误都在logcat中打印出错时函数的调用关系,而C库中出错时只看到一些二进制信息,使用gdbserver调试环境搭建又比较复杂. 方法一:下在介绍一个简单的调试库的方法,当然需

Linux内核死机调试方法总结

使用空指针和缓冲区溢出是产生oops的两个最常见原因. 1.直接查看oops信息,首先查找源代码发生oops的位置,通过查看指令寄存器EIP的值,可以找到位置.再查找函数调用栈可以得到更多的信息.从函数调用栈可辨别出局部变量,全局变量和函数参数.较为重要的信息就是指令指针(EIP),即出错指令的地址. 例如:在函数faulty_read的oops信息的函数调用栈中,栈顶为ffffffff,栈顶值应为一个小于ffffffff的值,为此值,说明再找不回调用函数地址,说明有可能因缓冲区溢出等原因造成指

电脑蓝屏死机怎么办?学会这个方法轻松就能修复!

不知道大家在平常的工作中有没有碰到过这样的情况,有时候正当你在工作的时候,电脑无缘无故的蓝屏.死机了,这种现象在网吧是非常常见的,记得有一次,小编去网吧上网,正当我玩的起劲的时候电脑蓝屏了,这可把我气得啊,找网管人家又爱理不理的样子! 导致电脑蓝屏.死机的原因非常多,下面小编总结了一些电脑蓝屏死机的处理方法与技巧,希望这些能帮得上大家忙,觉得小编总结的方法有用的话请为我转发一下吧! 开机没反应: 1.第一种情况很可能是因为电脑的显示屏电源没有接好,将显示屏的电源线拔掉重新插好! 2.第二种情况是

linux系统死机分析及解决方法

一.常见死机原因 二.日志分析 日志系统,通过rsyslog.service服务进行控制,分别用于记录系统内核和各应用程序的日志信息.配置文件/etc/rsyslog.conf /var/log/messages    记录系统内核消息及各种应用程序的公共日志信息,包括启动.IO错误.网络错误.程序报错等,对于未使用独立日志文件的应用程序或服务,一般都可以从该文件获得相关事件的日志记录信息. /var/log/cron    记录crond计划任务产生的事件消息 /var/log/dmesg