[发明专利]故障定位方法、装置和系统有效
申请号: | 201810998164.6 | 申请日: | 2018-08-29 |
公开(公告)号: | CN110874279B | 公开(公告)日: | 2023-05-30 |
发明(设计)人: | 杨骁 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F11/14 |
代理公司: | 北京博浩百睿知识产权代理有限责任公司 11134 | 代理人: | 褚敏;宋子良 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 故障 定位 方法 装置 系统 | ||
本申请公开了一种故障定位方法、装置和系统。其中,该方法包括:如果检测到系统出现故障,打印内核栈的栈区域和用户栈的栈区域,得到打印结果;存储打印结果,并控制系统重启;如果系统重启,基于打印结果确定故障类型。本申请解决了现有技术中故障定位方法无法及时获取故障发生时的故障信息,导致定位准确度低的技术问题。
技术领域
本申请涉及嵌入式系统领域,具体而言,涉及一种故障定位方法、装置和系统。
背景技术
在商业数据分析领域中,对智能路由器有两方面的需求,一方面是智能路由器能够长期稳定的将WiFi嗅探数据通过长连接通道上报到云端,另一方面是智能路由器能够长时间的稳定运行,不能出现挂死现象而又无法恢复,否则造成资源和时间的浪费。在路由器启动时,都会与云端服务器建立一个TCP的长连接管道,用来上报数据和接受服务器下发的控制指令或系统升级指令/数据等,因此如果发生了系统级别的崩溃,在设备重新启动之后,可以通过将发生异常时收集到的信息发送到服务端进行分析,以推测在异常的时候系统到底是因为什么原因不能正常工作。但是,挂死是一种阻碍信息收集的故障,路由器系统上收集数据和接受指令的程序已经不能得到调度和执行了,但并没有外力能够将设备重新启动恢复业务能力,除非切断电源,但即使那样的话,由于所有编写的软件逻辑都因为硬件断电不可能有机会运行,因而也没有机会收集到可对调试形成帮助的信息,在云端最多知道设备发生异常被人工重启了,却不知道设备的异常原因。
由上可知,由于程序的逻辑问题,如果是有相对高优先级的程序在内核栈陷入了CPU密集占用,例如不含有外存输入输出的死循环等,这时其它相对较低优先级的程序则会失去获得CPU执行机会,长期处于饥饿状态,无法正常完成业务逻辑。对于调试异常的场景,传统的解决手段如下:第一种是运行一些软件的调试器例如gdb,可以嵌入到其它需调试的程序线程里查看执行的语句和上下文,但缺点在于系统挂死的时候设备失去响应,已经没有机会去运行调试器;第二种是有一些硬件的调试器,可以观察内存和寄存器等,但缺点在于需要将硬件调试器用物理连接线接到硬件设备上下发调试指令,对部署在商业场所的成品机器没有条件进行连接部署,而且需要有人值守,挂死故障发生的条件往往没有那么清楚,复现一次可能要数天的时间,也没有办法等到挂死发生时去做硬件调试;第三种是可以在程序中一边运行一边打印系统运行日志,到异常发生的时候从已经打印到串口中断的文本反过来分析异常出现之前程序曾经执行到什么逻辑附近,但对挂死场景,由于并不确切的知道什么程序逻辑引起了异常,全系统的代码量又非常的浩大,几乎不可能刚好是在导致异常的程序逻辑中增加了调试语句,所以只能作为大致定位之后的一种补充手段,而无法作为直接切入点定位到异常逻辑。
传统解决方案一般都是用看门狗机制发现挂死,如果喂狗角色停止了喂狗达到一定的时间长度,则用看门狗程序触发设备的重新启动,缺点在于,虽然可以让设备脱离不可工作的异常僵死状态,但是下一次启动之后,宝贵的异常现场已经因为掉电而全部丢失了,开发运维人员没有办法寻找线索得知上一次设备为什么发生了挂死。如果这种挂死是可以频繁发生的,那么系统也会频繁的被看门狗杀死和重启,最后的局面就形成了设备不断的重启,仍然不能改变停止业务能力的状态。
针对现有技术中故障定位方法无法及时获取故障发生时的故障信息,导致定位准确度低的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种故障定位方法、装置和系统,以至少解决现有技术中故障定位方法无法及时获取故障发生时的故障信息,导致定位准确度低的技术问题。
根据本申请实施例的一个方面,提供了一种故障定位方法,包括:如果检测到系统出现故障,打印内核栈的栈区域和用户栈的栈区域,得到打印结果;存储打印结果,并控制系统重启;如果系统重启,基于打印结果确定故障类型。
根据本申请实施例的另一方面,还提供了一种故障定位装置,包括:打印模块,用于如果检测到系统出现故障,打印内核栈的栈区域和用户栈的栈区域,得到打印结果;存储模块,用于存储打印结果,并控制系统重启;确定模块,用于如果系统重启,基于打印结果确定故障类型。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810998164.6/2.html,转载请声明来源钻瓜专利网。