CN106227672B - 一种嵌入式应用程序故障捕捉及处理方法 - Google Patents
一种嵌入式应用程序故障捕捉及处理方法 Download PDFInfo
- Publication number
- CN106227672B CN106227672B CN201610650280.XA CN201610650280A CN106227672B CN 106227672 B CN106227672 B CN 106227672B CN 201610650280 A CN201610650280 A CN 201610650280A CN 106227672 B CN106227672 B CN 106227672B
- Authority
- CN
- China
- Prior art keywords
- application program
- task
- cpu
- built
- captures
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式应用程序故障捕捉及处理方法,其步骤为:S100:初始化,预处理;配置需要监视的寄存器表格,注册CPU硬件异常中断信号钩子函数和系统软中断异常信号钩子函数,寄存器表格作为参数传送给钩子函数;S200:进入监视程序;用来完成所有的分析判断处理和记录工作,包括:实时消息接收及处理任务、CPU使用率监视及处理任务和内存占用监视及处理任务。本发明具有自动化程度高、运行开销小、可靠性高等优点。
Description
技术领域
本发明主要涉及到嵌入式系统的监控领域,特指一种适用于嵌入式应用程序故障捕捉及处理方法。
背景技术
在PC桌面领域,应用程序运行中出现故障时,已经有非常丰富的工具来进行故障捕捉和应急处理,但在嵌入式领域,暂时还比较缺乏。随着嵌入式系统的设计越来越趋向于复杂,在应用程序出现故障时,如果不针对应用程序的运行状态做实时的监测,为故障分析提供数据,要在事后查明出错的原因会变得越来越困难;且嵌入式系统一般应用在工业现场领域,若不对故障进行应急处理,就很有可能会造成安全事故。
现有技术中,解决此问题的常用方案是运行一个后台的应用监视服务,比如桌面Linux上的ulimit(一种shell命令,可以开启linux core dump功能)。当应用程序出现故障时,会将应用程序发生故障的那一刻的系统做一个快照镜像,然后存入存储器,信息非常全面。但需要具备非常大的存储器硬件,嵌入式系统一般无法满足这么大的存储器要求;另外,由于需要存储大量的数据,会造成占用很长的写入时间,就无法做到快速复位,这个对于安全性要求高的嵌入式系统是无法容忍的。又例如,还有一种方式,常用的服务器Linux上的monit(一款功能非常丰富的进程、文件、目录和设备的监测软件),它主要是监控一般性的系统资源,比如CPU使用、内存、以及负载均值等,同时可以修复发生停止运行或异常运行的应用程序。monit的不足就是仅仅监视应用程序的运行状态是否为停止或异常来决定是否采取恢复处理,而没有捕捉造成故障的深层原因。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种自动化程度高、运行开销小、可靠性高的嵌入式应用程序故障捕捉及处理方法。
为解决上述技术问题,本发明采用以下技术方案:
一种嵌入式应用程序故障捕捉及处理方法,其步骤为:
S100:初始化,预处理;配置需要监视的寄存器表格,注册CPU硬件异常中断信号钩子函数和系统软中断异常信号钩子函数,寄存器表格作为参数传送给钩子函数;
S200:进入监视程序;用来完成所有的分析判断处理和记录工作,包括:实时消息接收及处理任务、CPU使用率监视及处理任务和内存占用监视及处理任务。
作为本发明的进一步改进:所述寄存器表格包含CPU级与外设硬件级所有的状态寄存器,以及额外需要关注的寄存器。
作为本发明的进一步改进:所述硬件异常中断信号包含外部复位输入中断信号、电源低中断信号和CPU温度超高中断信号。
作为本发明的进一步改进:所述软中断异常信号包含命令退出异常信号、非法指令异常信号和非法存储器引用异常信号。
作为本发明的进一步改进:当CPU硬件异常中断信号或者系统软中断异常信号发生,就会调用所述钩子函数,同时把预先配置好的寄存器表格传递给它;在钩子函数中,首先,按照寄存器配置表格获取这些寄存器当前的值,然后提取引发此信号的应用程序信息,将所有这些信息打包成监视程序能识别的实时消息的格式,发送给监视程序,然后立马退出。
作为本发明的进一步改进:所述实时消息接收及处理任务采用阻塞挂起的执行策略,当消息一旦产生就会立马被执行;所述CPU使用率监视及处理任务和内存占用监视及处理任务采用周期执行策略。
作为本发明的进一步改进:所述实时消息接收及处理任务中,当钩子函数将实时消息发送过来,此任务就会被立马唤醒执行,首先使将获得的信息按照人能识别的格式写入存储器,然后立马快速复位应用程序。
作为本发明的进一步改进:所述CPU使用率监视及处理任务是周期性地通过遍历系统的任务控制块信息,计算应用程序占用CPU的负荷,如果超过设定的阈值,就立马记录此应用程序的相关信息,然后将它快速复位。
作为本发明的进一步改进:所述内存占用监视及处理任务是周期性地遍历系统的任务控制块信息,获得应用程序占用内存的大小,如果超过设定阈值,就记录此应用程序的相关信息,然后将它快速复位。
与现有技术相比,本发明的优点在于:
1、本发明的嵌入式应用程序故障捕捉及处理方法,可以深入到硬件寄存器级别的状态值,CPU异常中断,以及软异常中断信号的捕捉,记录CPU和外设硬件关键状态寄存器,记录出错时的程序指针和栈指针,能同时捕捉硬件或软件两方面的故障源,实时监测CPU使用率和内存占用情况,为应用程序代码的改进提供依据。
2、本发明的嵌入式应用程序故障捕捉及处理方法,全自动无需人工参与,就可以获得系统关键寄存器、外设硬件关键寄存器的状态、硬件或者软件异常信号,还能实时监测运行性能,并快速重启。
附图说明
图1是本发明的流程示意图。
图2是本发明中初始化的流程示意图。
图3是本发明中执行任务a的流程示意图。
图4是本发明中执行任务b的流程示意图。
图5是本发明中执行任务c的流程示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明的一种嵌入式应用程序故障捕捉及处理方法,步骤为:
S100:初始化,预处理;配置需要监视的寄存器表格,注册CPU硬件异常中断信号钩子函数和系统软中断异常信号钩子函数,寄存器表格作为参数传送给钩子函数;
S200:进入监视程序;
在应用程序启动之前,本发明需要启动一个监视此应用程序的监视程序,它将完成所有的分析判断处理和记录工作,共分成三个独立的小任务来执行,它们分别是:
a.实时消息接收及处理任务;
b.CPU使用率监视及处理任务;
c.内存占用监视及处理任务。
由于嵌入式系统的应用程序,大部分都是定制开发的专用程序,因此在定制开发时,本发明包括对原有的应用程序初始化过程。在这个过程中,包括以下内容:
a.配置需要监视的寄存器表格;所述寄存器表格包含CPU级与外设硬件级所有的状态寄存器,以及额外需要关注的寄存器(比如CPU型号版本信息)等,这个寄存器表格会作为参数传送给钩子函数;
b.注册CPU硬件异常中断信号钩子函数;所述硬件异常中断信号包含外部复位输入中断信号,电源低中断信号和CPU温度超高中断信号等;
c.注册系统软中断异常信号钩子函数;所述软中断异常信号包含命令退出异常信号,非法指令异常信号,非法存储器引用异常信号等。
当CPU硬件异常中断信号或者系统软中断异常信号发生,就会调用该钩子函数,同时把预先配置好的寄存器表格传递给它。在钩子函数中,首先,按照寄存器配置表格获取这些寄存器当前的值,然后提取引发此信号的应用程序信息,比如名称、版本、时间、程序指针和栈指针等信息,将所有这些信息打包成监视程序能识别的实时消息的格式,发送给监视程序,然后立马退出。由于在钩子函数中仅完成信息的获取和发送出去,没有执行跟分析判断处理相关的工作,所以,能做到很高的实时性能。
为此,在具体应用实例中,如图2所示,上述步骤S100的具体流程为:
S1001:获取关键寄存器的状态;
S1002:获取当前故障应用程序的信息;
S1003:将获得的所有信息组成消息格式;
S1004:向后台监视服务发送消息。
在步骤S200中,第一个任务,为了达到更好的实时处理性能,本发明采用阻塞挂起的执行策略,当消息一旦产生就会立马被执行。其他两个任务,则采用周期执行策略(如每一秒),因为CPU超负荷或者内存占用高,会使系统进入危险的边界但一般还不会立马发生故障,所以低实时性的周期执行可以满足要求。
如图3所示,为在具体应用实例中任务a的流程示意图。当钩子函数将实时消息发送过来,此任务就会被立马唤醒执行,首先使将获得的信息按照人能识别的格式写入存储器,然后立马快速复位应用程序,由于在前期人工做了信息的筛选和区分,只保留了跟此应用程序相关的所有状态信息等,没有保存整个系统的运行现场,因而占用存储器的空间相对较少,写入存储器的时间相对较短,同时就能快速将故障的应用程序立马复位。
如图4所示,为在具体应用实例中任务b的流程示意图。此任务周期性地通过遍历系统的任务控制块信息,计算应用程序占用CPU的负荷,如果超过90%,就立马记录此应用程序的相关信息,包含应用程序名、时间、CPU使用率值,然后将它快速复位。CPU使用率计算方法如下:CPU使用率 = 每一秒中应用程序占用CPU执行所耗的时间 / 一秒钟。
如图5所示,为在具体应用实例中任务c的流程示意图。此任务周期性地通过遍历系统的任务控制块信息,获得应用程序占用内存的大小,如果超过总内存的75%,就立马记录此应用程序的相关信息,包含应用程序名、时间、内存占用值,然后将它快速复位。
本发明的一种嵌入式应用程序故障捕捉及处理方法,由于在前期人工做了信息的筛选和区分,只保留了跟此应用程序相关的所有状态信息等,没有保存整个系统的运行现场,因而占用存储器的空间相对较少,写入存储器的时间相对较短,同时就能快速将故障的应用程序立马复位。本发明通过记录CPU寄存器和外设硬件的寄存器值,为分析原因提供深层次的数据,同时寄存器表格可以根据需要任意配置。本发明进一步能同时捕捉到CPU硬件异常中断信号和系统软中断信号,也就是,可以捕捉到由硬件或者软件两方面造成的故障源。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (7)
1.一种嵌入式应用程序故障捕捉及处理方法,其特征在于,步骤为:
S100:初始化,预处理;配置需要监视的寄存器表格,注册CPU硬件异常中断信号钩子函数和系统软中断异常信号钩子函数,寄存器表格作为参数传送给钩子函数;所述寄存器表格包含CPU级与外设硬件级所有的状态寄存器,以及额外需要关注的寄存器;
S200:进入监视程序;用来完成所有的分析判断处理和记录工作,包括:实时消息接收及处理任务、CPU使用率监视及处理任务和内存占用监视及处理任务;
当CPU硬件异常中断信号或者系统软中断异常信号发生,就会调用所述钩子函数,同时把预先配置好的寄存器表格传递给它;在钩子函数中,首先,按照寄存器配置表格获取这些寄存器当前的值,然后提取引发所述CPU硬件异常中断信号或者系统软中断异常信号的应用程序信息,将所有这些信息打包成监视程序能识别的实时消息的格式,发送给监视程序,然后立马退出。
2.根据权利要求1所述的嵌入式应用程序故障捕捉及处理方法,其特征在于,所述硬件异常中断信号包含外部复位输入中断信号、电源低中断信号和CPU温度超高中断信号。
3.根据权利要求1所述的嵌入式应用程序故障捕捉及处理方法,其特征在于,所述软中断异常信号包含命令退出异常信号、非法指令异常信号和非法存储器引用异常信号。
4.根据权利要求1~3中任意一项所述的嵌入式应用程序故障捕捉及处理方法,其特征在于,所述实时消息接收及处理任务采用阻塞挂起的执行策略,当消息一旦产生就会立马被执行;所述CPU使用率监视及处理任务和内存占用监视及处理任务采用周期执行策略。
5.根据权利要求1~3中任意一项所述的嵌入式应用程序故障捕捉及处理方法,其特征在于,所述实时消息接收及处理任务中,当钩子函数将实时消息发送过来,此任务就会被立马唤醒执行,首先使将获得的信息按照人能识别的格式写入存储器,然后立马快速复位应用程序。
6.根据权利要求1~3中任意一项所述的嵌入式应用程序故障捕捉及处理方法,其特征在于,所述CPU使用率监视及处理任务是周期性地通过遍历系统的任务控制块信息,计算应用程序占用CPU的负荷,如果超过设定的阈值,就立马记录此应用程序的相关信息,然后将它快速复位。
7.根据权利要求1~3中任意一项所述的嵌入式应用程序故障捕捉及处理方法,其特征在于,所述内存占用监视及处理任务是周期性地遍历系统的任务控制块信息,获得应用程序占用内存的大小,如果超过设定阈值,就记录此应用程序的相关信息,然后将它快速复位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610650280.XA CN106227672B (zh) | 2016-08-10 | 2016-08-10 | 一种嵌入式应用程序故障捕捉及处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610650280.XA CN106227672B (zh) | 2016-08-10 | 2016-08-10 | 一种嵌入式应用程序故障捕捉及处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227672A CN106227672A (zh) | 2016-12-14 |
CN106227672B true CN106227672B (zh) | 2019-07-09 |
Family
ID=57547956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610650280.XA Active CN106227672B (zh) | 2016-08-10 | 2016-08-10 | 一种嵌入式应用程序故障捕捉及处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227672B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775487A (zh) * | 2016-12-27 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种多路径存储故障的处理方法和装置 |
CN107122193B (zh) * | 2017-04-28 | 2020-09-08 | 中国中车股份有限公司 | 一种消息线程挂起时间的动态调节方法 |
CN112069020B (zh) * | 2020-08-13 | 2023-09-15 | 中国航空无线电电子研究所 | 基于嵌入式操作系统的机载航电设备软件故障监控系统 |
CN112241366A (zh) * | 2020-09-23 | 2021-01-19 | 厦门亿联网络技术股份有限公司 | 嵌入式设备测试方法、装置及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1492320A (zh) * | 2002-10-25 | 2004-04-28 | 华为技术有限公司 | Windows程序异常捕获及定位方法 |
CN101452420A (zh) * | 2008-12-30 | 2009-06-10 | 中兴通讯股份有限公司 | 一种嵌入式软件异常监控和处理装置及其方法 |
CN101599039A (zh) * | 2008-06-03 | 2009-12-09 | 华为技术有限公司 | 嵌入式c语言环境下异常处理方法及装置 |
CN103500133A (zh) * | 2013-09-17 | 2014-01-08 | 华为技术有限公司 | 故障定位方法及装置 |
CN103559121A (zh) * | 2013-09-23 | 2014-02-05 | 清华大学 | 基于日志注入的驱动配置调试方法 |
CN105512015A (zh) * | 2015-12-15 | 2016-04-20 | 北京奇虎科技有限公司 | 一种安卓目标应用崩溃统计方法和装置 |
CN105786685A (zh) * | 2014-12-18 | 2016-07-20 | 青岛海信移动通信技术股份有限公司 | 一种移动终端在线调试和诊断的方法及终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4519738B2 (ja) * | 2005-08-26 | 2010-08-04 | 株式会社東芝 | メモリアクセス制御装置 |
-
2016
- 2016-08-10 CN CN201610650280.XA patent/CN106227672B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1492320A (zh) * | 2002-10-25 | 2004-04-28 | 华为技术有限公司 | Windows程序异常捕获及定位方法 |
CN101599039A (zh) * | 2008-06-03 | 2009-12-09 | 华为技术有限公司 | 嵌入式c语言环境下异常处理方法及装置 |
CN101452420A (zh) * | 2008-12-30 | 2009-06-10 | 中兴通讯股份有限公司 | 一种嵌入式软件异常监控和处理装置及其方法 |
CN103500133A (zh) * | 2013-09-17 | 2014-01-08 | 华为技术有限公司 | 故障定位方法及装置 |
CN103559121A (zh) * | 2013-09-23 | 2014-02-05 | 清华大学 | 基于日志注入的驱动配置调试方法 |
CN105786685A (zh) * | 2014-12-18 | 2016-07-20 | 青岛海信移动通信技术股份有限公司 | 一种移动终端在线调试和诊断的方法及终端 |
CN105512015A (zh) * | 2015-12-15 | 2016-04-20 | 北京奇虎科技有限公司 | 一种安卓目标应用崩溃统计方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106227672A (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227672B (zh) | 一种嵌入式应用程序故障捕捉及处理方法 | |
US10545807B2 (en) | Method and system for acquiring parameter sets at a preset time interval and matching parameters to obtain a fault scenario type | |
CN102999716B (zh) | 虚拟机器监控系统及方法 | |
CN108092836A (zh) | 一种服务器的监控方法及装置 | |
CN102722431B (zh) | 进程监控方法及装置 | |
CN109471845A (zh) | 日志管理方法、服务器及计算机可读存储介质 | |
CN104254097A (zh) | 一种流量控制方法和装置 | |
CN107506289A (zh) | 一种金融终端的异常状态监控方法及金融终端 | |
CN105204936A (zh) | 常驻进程管理通用平台及方法 | |
CN109254922A (zh) | 一种服务器BMC Redfish功能的自动化测试方法及装置 | |
CN102341789A (zh) | 用于监视计算机系统的设备和方法 | |
CN108694093A (zh) | 进程异常监控方法及装置 | |
CN103902011A (zh) | 电子设备控制方法及电子设备 | |
CN103927244B (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
CN105426544B (zh) | 监控数据库状态的方法及装置 | |
CN107423620A (zh) | 存储服务器服务进程的管理方法及装置 | |
CN105224416B (zh) | 修复方法及相关电子装置 | |
CN105893221A (zh) | 终端运行时长的告警方法及装置 | |
CN104038388A (zh) | 基于分布式的物联网自动测试系统及测试方法 | |
CN107766131B (zh) | 任务调度方法和装置 | |
CN103839137A (zh) | 一种基于物联网的无源箱体管理系统 | |
CN104571098A (zh) | 基于Atom平台的远程自诊断方法 | |
CN104346233A (zh) | 一种用于计算机系统的故障恢复方法及装置 | |
CN112415404A (zh) | 电池包的测试方法及电池包的测试装置 | |
CN101923878A (zh) | 数据存储控制系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |