一种嵌入式Linux系统下C语言监控软件容错的方法技术方案

技术编号:15301658 阅读:147 留言:0更新日期:2017-05-12 19:01
本发明专利技术提供的一种嵌入式Linux环境下C语言监控软件容错的方法,通过在C语言中实现类似C++中的try catch异常处理结构,在监控软件中第一时间捕获错误,并对错误进行处理,避免程序发生崩溃,从而使得监控软件具有更强的容错性。能使得监控软件在遇到段错误、浮点运算错误、退出错误的情况下,保证监控程序的循环过程一直执行,并能够在错误处理过程里对错误信息、错误发生的位置进行记录,以便于错误的分析;同时提供了用于实现上述操作的系统,该系统基于C语言监控软件的容错策略和方法,实现了对监控过程中错误程序的处理,性能损耗小,有效提高了系统的操作可靠性,避免了硬件定制的复杂性。

Fault tolerant method for C language monitoring software based on embedded Linux system

A method of embedded Linux environment C language software fault tolerance provided by the invention, the exception handling structure through the realization of similar C++ try catch in C, the first time to catch errors in monitoring software, and handle the errors, avoid program crash, so that the monitoring software has stronger fault tolerance. The monitoring software in case the wrong, wrong, wrong from the floating point operation, ensure cycle process monitoring program has been performed, and can record the location information, error error in the error handling process, in order to facilitate error analysis; at the same time provides a system used for realizing the operation of the the fault tolerance strategies and methods of monitoring software based on C language, to achieve the treatment of wrong program monitoring in the process of performance loss, improve the operation reliability of the system, to avoid the complexity of hardware customization.

【技术实现步骤摘要】

本专利技术属于服务器监控管理
,具体涉及一种嵌入式Linux系统下C语言监控软件容错的方法
技术介绍
目前嵌入式Linux系统已经广泛应用在了服务器监控领域,这些监控软件,时时刻刻对服务器的运行状态进行监控管理,需要保持长时间的稳定运行,并能够在自身崩溃的情况下,在较短的时间内重新运行。目前,大部分监控软件,使用C语言进行开发。但C语言中,没有提供类似C++中的trycatch类型的异常处理机制,一旦遇到某些如段错误、浮点运算错误等问题,程序就会崩溃退出。要保证程序继续运行,目前的解决方案是对监控软件进行定期检查,一旦检测到监控软件异常终止,就再重新运行该监控软件,这种方法一方面操作复杂,每次检查都需要重新编辑组织语言;另一方面,只能通过检查进行预防,而不能时刻解决异常问题。因此,提供一种嵌入式Linux系统下C语言监控软件容错的方法是十分必要的。
技术实现思路
本专利技术的目的在于解决上述现有技术中存在的缺少trycatch类型的异常处理机制,无法在监控软件中进行错误处理等难题,提供一种嵌入式linux系统下C语言监控软件容错的方法。本专利技术是通过以下技术方案实现的:一种嵌入式Linux系统下C语言监控软件容错的方法,其特征在于:包括以下步骤:(1)监控软件开始运行;(2)代码是否满足监控条件,如果满足进入步骤(3),若不满足,退出监控;(3)进行注册信号处理;一旦监控软件发生错误,错误就由信号处理流程接管,而不是由操作系统处理,一般是直接退出;(4)检测信号,检测是否存在错误信号,如果不能检测到错误信号,执行正常监控流程,进入步骤(5),如果检测到错误信号,则执行错误处理,跳转至步骤(2);将检测信号处理过程增加在监控主体前,无信号时进行正常的监控主体流程,有信号时则进行错误处理。(5)监控主体是否产生错误信号,如果产生错误信号,进行信号处理,并跳转至步骤(4),如果没有产生错误信号,则跳转至步骤(2)重新开始监控流程。在信号处理过程中,增加跳转,使程序跳回监控程序的循环流程。作为优选,所述步骤5中进行信号处理时,还进行日志记录操作。作为优选,所述步骤5中进行信号处理时,还进行信号类型记录操作。作为优选,所述步骤(4)中进行错误处理时,还进行错误发生时间记录操作。作为优选,所述步骤(4)中进行错误处理时,还进行全局变量记录操作。一种用于实现上述容错方法的系统,该系统集中于嵌入式Linux系统的操作核心层,其特征在于:包括监控管理模块,以及与其相连接的进程管理模块、信号处理模块、错误处理模块,所述进程管理模块、信号处理模块、错误处理模块依次连接,其中:(1)进程管理模块,该模块用于实现监控过程周期管理,包括监控进程的创建、调度、通信,使得原生进程在有序执行原有逻辑的同时,满足C语言容错监控的需要;(2)信号处理模块,该模块用于实现注册信号检测以及信号处理,注册信号检测到错误后,首先程序自行进行处理,无法解决时进入Linux操作系统处理;信号处理模块将终端的程序流程跳转,重新回到监控流程中;(3)错误处理模块,该模块用于实现错误类型诊断以及根据预配置采取相应错误处理方式,完成错误修复;(4)监控管理模块,包括总控制端以及内部管理端,总控制端提供给用户可视的操作界面,内部管理端与总控制端进行交互,使得用户可在总控制端查看监控软件运行状态,容错日志,对系统各项参数进行预配置。与现有技术相比,本专利技术的有益效果是:本专利技术提供的一种嵌入式Linux环境下C语言监控软件容错的方法,通过在C语言中实现类似C++中的trycatch异常处理结构,在监控软件中第一时间捕获错误,并对错误进行处理,避免程序发生崩溃,从而使得监控软件具有更强的容错性。能使得监控软件在遇到段错误、浮点运算错误、退出错误的情况下,保证监控程序的循环过程一直执行,并能够在错误处理过程里对错误信息、错误发生的位置进行记录,以便于错误的分析。方案中还提供了用于实现该方法的系统设计,该系统基于C语言监控软件的容错策略和方法,实现了对监控过程中错误程序的处理,性能损耗小,有效提高了系统的操作可靠性,避免了硬件定制的复杂性。此外,本专利技术方法原理可靠,步骤简单,具有非常广泛的应用前景。由此可见,本专利技术与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。附图说明图1是本专利技术提供的一种嵌入式Linux环境下C语言监控软件容错的方法的工作流程图。图2是本专利技术提供的一种嵌入式Linux环境下C语言监控软件容错系统的结构示意图。其中,1-进程管理模块,2-信号处理模块,3-错误处理模块,4-监控管理模块,41-总控制端,42-内部管理端。具体实施方式下面结合附图对本专利技术作进一步详细描述:一种嵌入式Linux系统下C语言监控软件容错的方法,首先对通用的监控软件的处理流程做一个说明。监控软件(main)是一个根据一定的定时规则,无限循环执行的程序。要保证监控软件的持久性运行,需要监控核心代码(monitor)足够的稳定,不出差错。但随着代码的复杂度增加,出错的几率逐渐变大,特别是一些偶发性的、复现率低的错误。这些错误,如浮点运算除以0,就会导致监控程序出错退出。下面表格中的代码,是本实施例的代码框架。以其为例进行本专利技术容错方法的描述。如图1所示,一种嵌入式Linux系统下C语言监控软件容错的方法,包括以下步骤:(1)监控软件开始运行;(2)代码是否满足监控条件,如果满足进入步骤(3),若不满足,退出监控;(3)进行注册信号处理;(4)检测信号,检测是否存在错误信号,如果不能检测到错误信号,执行正常监控流程,进入步骤(5),如果检测到错误信号,则执行错误处理,跳转至步骤(2);(5)监控主体是否产生错误信号,如果产生错误信号,进行信号处理,并跳转至步骤(4),如果没有产生错误信号,则跳转至步骤(2)重新开始监控流程。其中,步骤(3)进行注册信号处理,对应示例代码的signal函数。如果为注册信号处理,一旦出错,程序就会退出,linux会弹出一个信息。注册信号处理后,发生错误后,首先由程序自己进行这些错误处理,自己处理不了时,才会被Linux操作系统处理。为保证程序不退出,至少应该对SIGSEGV、SIGFPE、SIGABRT注册信号处理。signal_hdl就是注册的信号处理函数。步骤(4)中的检测信号对应示例代码中的sigsetjmp函数。这是一个选择结构,如果没有检测到信号,则执行正常监控(monitor)流程;如果检测到信号,则执行错误处理。在错误处理中,可以记录错误发生的时间,另外可以记录一些全局变量,以大体定位错误发生的位置。步骤(5)中的信号处理操作对应示例代码中的signal_hdl函数。信号处理的主要目的是,将中断的程序流程跳转(siglongjmp),重新回到监控流程,而不是接收到信号后,就使监控程序退出。另外,可以在信号处理函数中,增加日志操作,对信号的类型等进行记录,作为bug分析日志的一部分。如图2所示,本专利技术还提供了一种用于实现上述容错方法的系统,该系统集中于嵌入式Linux系统的操作核心层,包括监控管理模块4,以及与其相连接的进程管理模块1、信号处理模块2、错误处理模块3,所述进程管理模块1、信号处理模块2本文档来自技高网...
一种嵌入式Linux系统下C语言监控软件容错的方法

【技术保护点】
一种嵌入式Linux系统下C语言监控软件容错的方法,其特征在于:包括以下步骤:(1)监控软件开始运行;(2)代码是否满足监控条件,如果满足进入步骤(3),若不满足,退出监控;(3)进行注册信号处理;(4)检测信号,检测是否存在错误信号,如果不能检测到错误信号,执行正常监控流程,进入步骤(5),如果检测到错误信号,则执行错误处理,跳转至步骤(2);(5)监控主体是否产生错误信号,如果产生错误信号,进行信号处理,并跳转至步骤(4),如果没有产生错误信号,则跳转至步骤(2)重新开始监控流程。

【技术特征摘要】
1.一种嵌入式Linux系统下C语言监控软件容错的方法,其特征在于:包括以下步骤:(1)监控软件开始运行;(2)代码是否满足监控条件,如果满足进入步骤(3),若不满足,退出监控;(3)进行注册信号处理;(4)检测信号,检测是否存在错误信号,如果不能检测到错误信号,执行正常监控流程,进入步骤(5),如果检测到错误信号,则执行错误处理,跳转至步骤(2);(5)监控主体是否产生错误信号,如果产生错误信号,进行信号处理,并跳转至步骤(4),如果没有产生错误信号,则跳转至步骤(2)重新开始监控流程。2.如权利要求1所述的一种嵌入式Linux系统下C语言监控软件容错的方法,其特征在于:所述步骤5中进行信号处理时,还进行日志记录操作。3.如权利要求1所述的一种嵌入式Linux系统下C语言监控软件容错的方法,其特征在于:所述步骤5中进行信号处理时,还进行信号类型记录操作。4.如权利要求1所述的一种嵌入式Linux系统下C语言监控软件容错的方法,其特征在于:所述步骤(4)中进行错误处理时,还进行错误发生时间记录操作。5.如权利要求1所述的一种嵌入式Linux系统下C语言...

【专利技术属性】
技术研发人员:刘波
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南;41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1