基于嵌入式实时系统的日志服务方法和系统与流程

文档序号:14554594阅读:166来源:国知局
基于嵌入式实时系统的日志服务方法和系统与流程

本发明涉及嵌入式系统技术领域,具体地,涉及基于嵌入式实时系统的日志服务方法和系统,尤其是涉及嵌入式实时系统中日志服务的初始化方法,日志记录方法、日志显示方法和日志备份方法。



背景技术:

目前,现有的日志服务是将系统所有历史和当前的任务发送的日志记录信息,通过拷贝该日志记录信息,保存在位于存储介质中的基于文件系统的日志文件内。当调试人员需要查看日志记录信息时,获取日志文件内所有的日志记录信息。

传统的这种日志服务方法针对日志记录信息的读写,都需要对存储介质进行读写,外部存储介质访问速度慢,频繁的读写访问对系统资源消耗严重,使用效率低;且读取到的所有日志记录信息,庞大而无序,无法区分日志是属于当前系统运行时的日志,还是系统历史的日志信息,难于实现系统的快速、准确的诊断和定位;基于文件系统进行读写访问,对于嵌入式实时系统来说,异常故障导致看门狗复位系统随时可能发生,它会导致文件系统不一致性,带来文件系统的破坏和信息的丢失。

经检索发现如下专利文献:

申请号:03145553.0,名称:应用程序日志记录方法及系统。该发明公开了一种日志服务系统,该发明利用进程间通讯技术将原来频繁的磁盘i/o操作大大降低,既能进行日志的详细记录,又保持较低的资源占用率。该发明针对的是pc系统,嵌入式系统与pc系统的差别在于硬件资源更加缺乏,且由于工作环境复杂,随时可能出现看门狗复位的情况,本发明针对嵌入式系统的特点,提出了一种在提高效率的同时确保日志记录可靠性的方法。

申请号:200810127512.9,名称:一种嵌入式系统的日志功能实现方法。该发明公开了一种嵌入式系统的日志功能实现方法,该发明将过滤后的日志信息保存在内存缓冲池中,在写缓存条件出发后,将内存缓存池中的日志信息进行压缩,将压缩后的日志信息写入日志文件,采用日志过滤和压缩后,大大减少了对存储介质的读写访问,提高了嵌入式系统的性能。本发明在解决日志存储效率低的前提下,进一步提升了日志记录的规范性,使系统的故障诊断更加快速和准确,同时对日志的内容进行校验,确保了日志的可靠性。

申请号:201310496989.5,名称:嵌入式系统的日志存储方法、系统及日志读取方法和系统。该发明公开了一种嵌入式系统的日志存储方法、系统及日志读取方法和系统,该方法先将日志数据保存在随机存储器中,再从随机存储器中将日志数据复制到外存储器,在嵌入式软件系统上,既能保证所有任务的正常运行,又能以较低的内存利用率将日志数据快速的保存,且发生掉电时从随机存储器复制到外存储器的日志数据也不会丢失。本发明则针对看门狗复位造成的热重启过程中可能造成随机存储器中的日志数据被破坏问题进行了处理,保证即使看门狗复位导致随机存储器中的数据未能及时存入外部存储器,随机存储器中的数据也不会因为看门狗复位而被破坏。

申请号:201410100327.6,名称:一种嵌入式系统的日志管理方法。该发明公开了一种嵌入式系统的日志管理方法,该发明提供了当前日志和历史日志的快速查看方式,只有在嵌入式系统复位或定时检测到日志记录区有改动时,将所述日志内存块的日志记录区中所有二进制数据保存到存储介质。在系统初始化的时候一次性为日志记录分配整块且连续的日志内存块,减少了系统内存的浪费。本发明将在普通日志的基础上增加了日志轨迹记录,通过记录任务调用执行顺序以及用户自定义桩点执行顺序,为分析故障发生时的程序运行轨迹提供帮助。

综上,现有嵌入式系统日志服务实现方法专注于日志服务效率的提升以及日志内容的快速查找上。对于嵌入式系统来说,保证日志服务的可靠性也同样重要。本发明提供了一种提高日志服务效率,利于系统故障快速定位,保证可靠性的方法。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种基于嵌入式实时系统的日志服务方法和系统。

根据本发明提供的一种基于嵌入式实时系统的日志服务方法,包括:

日志内存管理步骤:在嵌入式实时系统初始化时,为日志服务分配所需内存空间构成日志内存;

日志服务初始化步骤:在所述日志内存管理步骤执行之后,对日志服务进行初始化,选择是否保留日志内存中原有的日志记录,并指定每条日志记录的大小;进入日志记录步骤:

日志记录步骤:在所述日志服务初始化步骤执行之后,将出现异常故障时嵌入式实时系统捕获的异常信息、用户添加的日志信息以及日志校验码写入日志内存中作为日志记录;进入日志记录查询显示步骤;

日志显示步骤:在所述日志记录步骤执行之后,查询并显示所述日志内存中通过校验有效的日志记录;

日志备份步骤:在所述日志记录步骤执行之后,将日志内存中的日志记录保存到文件系统中,并且将掉电情况下的日志记录保存在非易失性存储器中;

轨迹记录步骤:在所述日志内存管理步骤执行之后,将任务调用执行顺序和/或用户自定义桩点执行顺序在日志内存中进行记录。

优选地,所述日志内存内保存的信息在热重启的情况下具有完整有效性;所述日志内存设置为非高速缓冲存储器访问,并且所述日志内存的内存地址空间设为常驻转换检测缓冲区,复位时设置日志内存自刷新;

所述日志服务初始化步骤包括:

设置状态判断步骤:判断日志初始化状态是否未设置;若已设置,则进入日志记录步骤;若未设置,则进入日志地址与长度设置步骤;

日志地址与长度设置步骤:获取并设置日志地址与日志长度;

新建日志判断步骤:在所述日志地址与长度设置步骤执行之后,判断是否新建日志;若新建日志,则新建日志数据结构并初始化日志数据结构的参数,进入日志初始化状态设置步骤;若不新建日志,则检查日志内存中日志数据结构是否有效;若日志内存中日志数据结构是有效的,则继续使用原有日志数据结构;若日志内存中日志数据结构不是有效的,则新建日志数据结构并初始化日志数据结构的参数,进入日志初始化状态设置步骤;

日志初始化状态设置步骤:设置日志初始化状态。

优选地,所述日志记录步骤包括如下步骤:

信息获取步骤:获取当前任务id、cpuid与日志地址;

日志服务有效性判断步骤:判断日志服务有效性;若无效,则显示无效信息;若有效,则获取一个日志记录单元,进入设置日志记录步骤;

设置日志记录步骤:设置该日志记录单元的基本静态信息,并记录当前系统时间,进入文件任务名有效性判断步骤;

文件任务名有效性判断步骤:判断文件名与任务名是否均有效;若均有效,则记录文件名、任务名;若不是均有效,则进入异常信息选项判断步骤;

异常信息选项判断步骤:判断异常信息选项的有效性;若有效,则记录异常信息;若无效,则进入上下文信息选项判断步骤:

上下文信息选项判断步骤:判断上下文信息选项的有效性;若有效,则记录上下文信息;若无效,则进入栈回溯信息选项判断步骤;

栈回溯信息选项判断步骤:判断栈回溯信息选项的有效性;若有效,则记录栈回溯信息,进入日志记录单元提交步骤;若无效,则进入日志记录单元提交步骤;

日志记录单元提交步骤:生成该条日志记录单元的校验码并提交一个日志记录单元作为一条日志记录的插入。

优选地:

所述日志显示步骤包括如下步骤:

初始化状态有效性判断步骤:判断日志初始化状态是否有效;若有效,则进入日志信息获取步骤;若无效,则结束流程;

日志信息获取步骤:获取日志地址与日志记录总条数,并计算需要显示的日志记录条数,打印显示日志头信息,进入日志迭代步骤;

日志迭代步骤:创建日志迭代器,再通过日志迭代器查询日志记录单元,并对日志记录单元的校验码进行校验是否有效;若有效,则进入日志打印步骤;若无效,则结束流程;

日志打印步骤:打印显示日志记录单元中的日志记录,返回日志迭代步骤继续执行;

所述日志备份步骤包括如下步骤,如图6所示:

初始化状态有效性判断步骤:判断日志初始化状态是否有效;若有效,则进入创建备份输出步骤;若无效,则结束流程;

创建备份输出步骤:在文件系统中创建备份输出文件,进入日志信息获取步骤;

日志信息获取步骤:获取日志地址与日志记录总条数,并计算需要备份的日志记录条数,进入头信息输出步骤;

头信息输出步骤:输出备份日志头信息到所述备份输出文件,进入日志迭代步骤;

日志迭代步骤:创建日志迭代器,再通过日志迭代器查询日志记录单元,并对日志记录单元的校验码进行校验是否有效;若有效,则进入备份输出步骤;若无效,则结束流程;

备份输出步骤:备份输出日志记录单元信息到文件系统中的备份输出文件,返回日志迭代步骤继续执行。

优选地,所述轨迹记录步骤包括如下步骤:

地址设置步骤:设置轨迹记录结构体地址,在轨迹记录结构体中设置一个参数,该参数在轨迹记录功能未初始化完成时为随机值,在轨迹记录功能初始化完成后,设置为指定数值;该参数作为判断轨迹记录功能是否初始化完成的标记,轨迹记录功能初始化进行前检测该值,若已进行过初始化,则跳过初始化过程,否则触发轨迹初始化步骤进行初始化;

轨迹初始化步骤:添加任务切换轨迹记录钩子,设置轨迹记录状态,进入轨迹记录插入步骤;

轨迹记录插入步骤:插入轨迹记录,判断是否日志初始化且待写入的记录数据与上次不同;若是,则将记录数据写入轨迹记录环形缓冲区;若否,则结束流程;

轨迹记录显示步骤:显示轨迹记录,判断是否轨迹记录模块是否已初始化;若是,则遍历轨迹记录环形缓冲区显示轨迹记录信息,显示轨迹记录信息对应任务名;若否,则结束流程。

根据本发明提供的一种基于嵌入式实时系统的日志服务系统,包括:

日志内存管理模块:在嵌入式实时系统初始化时,为日志服务分配所需内存空间构成日志内存;

日志服务初始化模块:在所述日志内存管理模块执行之后,对日志服务进行初始化,选择是否保留日志内存中原有的日志记录,并指定每条日志记录的大小;触发日志记录模块:

日志记录模块:在所述日志服务初始化模块执行之后,将出现异常故障时嵌入式实时系统捕获的异常信息、用户添加的日志信息以及日志校验码写入日志内存中作为日志记录;触发日志记录查询显示模块;

日志显示模块:在所述日志记录模块执行之后,查询并显示所述日志内存中通过校验有效的日志记录;

日志备份模块:在所述日志记录模块执行之后,将日志内存中的日志记录保存到文件系统中,并且将掉电情况下的日志记录保存在非易失性存储器中;

轨迹记录模块:在所述日志内存管理模块执行之后,将任务调用执行顺序和/或用户自定义桩点执行顺序在日志内存中进行记录。

优选地,所述日志内存内保存的信息在热重启的情况下具有完整有效性;所述日志内存设置为非高速缓冲存储器访问,并且所述日志内存的内存地址空间设为常驻转换检测缓冲区,复位时设置日志内存自刷新;

所述日志服务初始化模块包括:

设置状态判断模块:判断日志初始化状态是否未设置;若已设置,则触发日志记录模块;若未设置,则触发日志地址与长度设置模块;

日志地址与长度设置模块:获取并设置日志地址与日志长度;

新建日志判断模块:在所述日志地址与长度设置模块执行之后,判断是否新建日志;若新建日志,则新建日志数据结构并初始化日志数据结构的参数,触发日志初始化状态设置模块;若不新建日志,则检查日志内存中日志数据结构是否有效;若日志内存中日志数据结构是有效的,则继续使用原有日志数据结构;若日志内存中日志数据结构不是有效的,则新建日志数据结构并初始化日志数据结构的参数,触发日志初始化状态设置模块;

日志初始化状态设置模块:设置日志初始化状态。

优选地,所述日志记录模块包括如下模块:

信息获取模块:获取当前任务id、cpuid与日志地址;

日志服务有效性判断模块:判断日志服务有效性;若无效,则显示无效信息;若有效,则获取一个日志记录单元,触发设置日志记录模块;

设置日志记录模块:设置该日志记录单元的基本静态信息,并记录当前系统时间,触发文件任务名有效性判断模块;

文件任务名有效性判断模块:判断文件名与任务名是否均有效;若均有效,则记录文件名、任务名;若不是均有效,则触发异常信息选项判断模块;

异常信息选项判断模块:判断异常信息选项的有效性;若有效,则记录异常信息;若无效,则触发上下文信息选项判断模块:

上下文信息选项判断模块:判断上下文信息选项的有效性;若有效,则记录上下文信息;若无效,则触发栈回溯信息选项判断模块;

栈回溯信息选项判断模块:判断栈回溯信息选项的有效性;若有效,则记录栈回溯信息,触发日志记录单元提交模块;若无效,则触发日志记录单元提交模块

日志记录单元提交模块:生成该条日志记录单元的校验码并提交一个日志记录单元作为一条日志记录的插入。

优选地:

所述日志显示模块包括如下模块:

初始化状态有效性判断模块:判断日志初始化状态是否有效;若有效,则触发日志信息获取模块;若无效,则结束流程;

日志信息获取模块:获取日志地址与日志记录总条数,并计算需要显示的日志记录条数,打印显示日志头信息,触发日志迭代模块;

日志迭代模块:创建日志迭代器,再通过日志迭代器查询日志记录单元,并对日志记录单元的校验码进行校验是否有效;若有效,则触发日志打印模块;若无效,则结束流程;

日志打印模块:打印显示日志记录单元中的日志记录,返回日志迭代模块继续执行;

所述日志备份模块包括如下模块,如图6所示:

初始化状态有效性判断模块:判断日志初始化状态是否有效;若有效,则触发创建备份输出模块;若无效,则结束流程;

创建备份输出模块:在文件系统中创建备份输出文件,触发日志信息获取模块;

日志信息获取模块:获取日志地址与日志记录总条数,并计算需要备份的日志记录条数,触发头信息输出模块;

头信息输出模块:输出备份日志头信息到所述备份输出文件,触发日志迭代模块;

日志迭代模块:创建日志迭代器,再通过日志迭代器查询日志记录单元,并对日志记录单元的校验码进行校验是否有效;若有效,则触发备份输出模块;若无效,则结束流程;

备份输出模块:备份输出日志记录单元信息到文件系统中的备份输出文件,返回日志迭代模块继续执行。

优选地,所述轨迹记录模块包括如下模块:

地址设置模块:设置轨迹记录结构体地址,在轨迹记录结构体中设置一个参数,该参数在轨迹记录功能未初始化完成时为随机值,在轨迹记录功能初始化完成后,设置为指定数值;该参数作为判断轨迹记录功能是否初始化完成的标记,轨迹记录功能初始化进行前检测该值,若已进行过初始化,则跳过初始化过程,否则触发轨迹初始化模块进行初始化;

轨迹初始化模块:添加任务切换轨迹记录钩子,设置轨迹记录状态,触发轨迹记录插入模块;

轨迹记录插入模块:插入轨迹记录,判断是否日志初始化且待写入的记录数据与上次不同;若是,则将记录数据写入轨迹记录环形缓冲区;若否,则结束流程;

轨迹记录显示模块:显示轨迹记录,判断是否轨迹记录模块是否已初始化;若是,则遍历轨迹记录环形缓冲区显示轨迹记录信息,显示轨迹记录信息对应任务名;若否,则结束流程。

与现有技术相比,本发明具有如下的有益效果:

1、不依赖过多的外设与系统资源,效率高,在系统异常、文件系统崩溃、存储设备损坏等特殊情况下,仍然能够记录下日志信息;

2、当程序发生问题导致系统异常时,日志服务可以在看门狗复位系统前,将所有信息保存记录下来;

3、在系统复位的过程中,保证日志信息的完整性,即便是信息被破坏,在读取解析日志信息时还需要进行校验,保证信息的完整有效性;记录信息有序,能够实现系统故障的快速诊断定位。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为日志服务功能图。

图2为日志服务流程图。

图3为初始化日志服务流程图。

图4为记录日志的流程图。

图5为日志显示的流程图。

图6为日志备份流程图。

图7为轨迹记录的流程图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

本发明提供的日志服务包括以下内容,如图1所示:

1、异常与用户日志记录;

2、日志查询显示;

3、日志获取备份;

4、日志轨迹记录;

5、热重启后内容不被破坏的一块内存空间;

本发明提供的基于嵌入式实时系统的日志服务方法,实现流程如图2所示。

在嵌入式实时系统初始化时,通过日志内存管理步骤,分配日志服务所需内存空间获得日志内存,设置为非高速缓冲存储器(cache)访问,并将该段日志内存的内存地址空间设为常驻转换检测缓冲区(tlb,translationlookasidebuffer),通过复位时设置日志内存自刷新(sr,selfrefresh)模式,保证在热重启的情况下该日志内存内保存的信息不会被破坏,为日志服务提供基础保障。

在所述日志内存管理步骤执行后,触发日志服务初始化步骤、轨迹记录步骤。

通过日志服务初始化步骤,对日志服务进行初始化,选择是否保留日志内存中原有的日志记录,并指定每条日志记录的大小;出现异常故障时系统捕获的异常信息与用户添加的日志信息以及日志校验码将作为日志记录写入日志内存中。

在所述日志服务初始化步骤执行后,触发日志显示步骤、日志备份步骤;

通过日志显示步骤,对于已经记录的日志记录,通过日志显示功能,按照日志的级别、类型、起始编号以及条数,查询并显示日志内存中记录的通过校验有效的日志记录。

通过日志备份步骤,日志备份功能将日志内存中的日志记录保存到文件系统中,并且,将掉电情况下的日志记录保存在硬盘、flash、sd卡等非易失性存储器中,实现掉电情况下的日志保存。

在日志内存管理完成之后,执行轨迹记录步骤,通过轨迹记录功能,将任务调用执行顺序以及用户自定义桩点执行顺序在日志内存中进行记录。

所述日志服务初始化步骤包括如下步骤,如图3所示:

设置状态判断步骤:判断日志初始化状态是否未设置;若已设置,则进入日志记录步骤;若未设置,则进入日志地址与长度设置步骤;

日志地址与长度设置步骤:获取并设置日志地址与日志长度;

新建日志判断步骤:在所述日志地址与长度设置步骤执行之后,判断是否新建日志;若新建日志,则新建日志数据结构并初始化日志数据结构的参数,进入日志初始化状态设置步骤;若不新建日志,则检查日志内存中日志数据结构是否有效;若日志内存中日志数据结构是有效的,则继续使用原有日志数据结构;若日志内存中日志数据结构不是有效的,则新建日志数据结构并初始化日志数据结构的参数,进入日志初始化状态设置步骤;

日志初始化状态设置步骤:设置日志初始化状态。

所述日志记录步骤包括如下步骤,如图4所示:

信息获取步骤:获取当前任务id、cpuid与日志地址;

日志服务有效性判断步骤:判断日志服务有效性;若无效,则显示无效信息;若有效,则获取一个日志记录单元,进入设置日志记录步骤;

设置日志记录步骤:设置该日志记录单元的基本静态信息,并记录当前系统时间,进入文件任务名有效性判断步骤;

文件任务名有效性判断步骤:判断文件名与任务名是否均有效;若均有效,则记录文件名、任务名;若不是均有效,则进入异常信息选项判断步骤;

异常信息选项判断步骤:判断异常信息选项的有效性;若有效,则记录异常信息;若无效,则进入上下文信息选项判断步骤:

上下文信息选项判断步骤:判断上下文信息选项的有效性;若有效,则记录上下文信息;若无效,则进入栈回溯信息选项判断步骤;

栈回溯信息选项判断步骤:判断栈回溯信息选项的有效性;若有效,则记录栈回溯信息,进入日志记录单元提交步骤;若无效,则进入日志记录单元提交步骤

日志记录单元提交步骤:生成该条日志记录单元的校验码并提交一个日志记录单元作为一条日志记录的插入。

所述日志显示步骤包括如下步骤,如图5所示:

初始化状态有效性判断步骤:判断日志初始化状态是否有效;若有效,则进入日志信息获取步骤;若无效,则结束流程;

日志信息获取步骤:获取日志地址与日志记录总条数,并计算需要显示的日志记录条数,打印显示日志头信息,进入日志迭代步骤;

日志迭代步骤:创建日志迭代器,再通过日志迭代器查询日志记录单元,并对日志记录单元的校验码进行校验是否有效;若有效,则进入日志打印步骤;若无效,则结束流程;

日志打印步骤:打印显示日志记录单元中的日志记录,返回日志迭代步骤继续执行。

所述日志备份步骤包括如下步骤,如图6所示:

初始化状态有效性判断步骤:判断日志初始化状态是否有效;若有效,则进入创建备份输出步骤;若无效,则结束流程;

创建备份输出步骤:在文件系统中创建备份输出文件,进入日志信息获取步骤;

日志信息获取步骤:获取日志地址与日志记录总条数,并计算需要备份的日志记录条数,进入头信息输出步骤;

头信息输出步骤:输出备份日志头信息到所述备份输出文件,进入日志迭代步骤;

日志迭代步骤:创建日志迭代器,再通过日志迭代器查询日志记录单元,并对日志记录单元的校验码进行校验是否有效;若有效,则进入备份输出步骤;若无效,则结束流程;

备份输出步骤:备份输出日志记录单元信息到文件系统中的备份输出文件,返回日志迭代步骤继续执行。

所述轨迹记录步骤包括如下步骤,如图7所示:

地址设置步骤:设置轨迹记录结构体地址,在轨迹记录结构体中设置一个参数,该参数在轨迹记录功能未初始化完成时为随机值,在轨迹记录功能初始化完成后,设置为指定数值。该参数作为判断轨迹记录功能是否初始化完成的标记,轨迹记录功能初始化进行前检测该值,若已进行过初始化,则跳过初始化过程,否则触发轨迹初始化步骤进行初始化;

轨迹初始化步骤:添加任务切换轨迹记录钩子,设置轨迹记录状态,进入轨迹记录插入步骤;

轨迹记录插入步骤:插入轨迹记录,判断是否日志初始化且待写入的记录数据与上次不同;若是,则将记录数据写入轨迹记录环形缓冲区;若否,则结束流程;

轨迹记录显示步骤:显示轨迹记录,判断是否轨迹记录模块是否已初始化;若是,则遍历轨迹记录环形缓冲区显示轨迹记录信息,显示轨迹记录信息对应任务名;若否,则结束流程。

本发明还提供一种基于嵌入式实时系统的日志服务系统,本领域技术人员可以将所述基于嵌入式实时系统的日志服务方法理解为所述基于嵌入式实时系统的日志服务系统的实施例,所述基于嵌入式实时系统的日志服务系统可以通过所述基于嵌入式实时系统的日志服务方法的步骤流程实现。

具体地,根据本发明提供的一种基于嵌入式实时系统的日志服务系统,包括:

日志内存管理模块:在嵌入式实时系统初始化时,为日志服务分配所需内存空间构成日志内存;

日志服务初始化模块:在所述日志内存管理模块执行之后,对日志服务进行初始化,选择是否保留日志内存中原有的日志记录,并指定每条日志记录的大小;触发日志记录模块:

日志记录模块:在所述日志服务初始化模块执行之后,将出现异常故障时嵌入式实时系统捕获的异常信息、用户添加的日志信息以及日志校验码写入日志内存中作为日志记录;触发日志记录查询显示模块;

日志显示模块:在所述日志记录模块执行之后,查询并显示所述日志内存中通过校验有效的日志记录;

日志备份模块:在所述日志记录模块执行之后,将日志内存中的日志记录保存到文件系统中,并且将掉电情况下的日志记录保存在非易失性存储器中;

轨迹记录模块:在所述日志内存管理模块执行之后,将任务调用执行顺序和/或用户自定义桩点执行顺序在日志内存中进行记录。

所述日志内存内保存的信息在热重启的情况下具有完整有效性,所述日志内存内保存的信息在热重启的情况下不被破坏或者通过校验保证完整有效性;所述日志内存设置为非高速缓冲存储器访问,并且所述日志内存的内存地址空间设为常驻转换检测缓冲区,复位时设置日志内存自刷新;

所述日志服务初始化模块包括:

设置状态判断模块:判断日志初始化状态是否未设置;若已设置,则触发日志记录模块;若未设置,则触发日志地址与长度设置模块;

日志地址与长度设置模块:获取并设置日志地址与日志长度;

新建日志判断模块:在所述日志地址与长度设置模块执行之后,判断是否新建日志;若新建日志,则新建日志数据结构并初始化日志数据结构的参数,触发日志初始化状态设置模块;若不新建日志,则检查日志内存中日志数据结构是否有效;若日志内存中日志数据结构是有效的,则继续使用原有日志数据结构;若日志内存中日志数据结构不是有效的,则新建日志数据结构并初始化日志数据结构的参数,触发日志初始化状态设置步骤;

日志初始化状态设置模块:设置日志初始化状态。

所述日志记录模块包括如下模块:

信息获取模块:获取当前任务id、cpuid与日志地址;

日志服务有效性判断模块:判断日志服务有效性;若无效,则显示无效信息;若有效,则获取一个日志记录单元,触发设置日志记录模块;

设置日志记录模块:设置该日志记录单元的基本静态信息,并记录当前系统时间,触发文件任务名有效性判断模块;

文件任务名有效性判断模块:判断文件名与任务名是否均有效;若均有效,则记录文件名、任务名;若不是均有效,则触发异常信息选项判断模块;

异常信息选项判断模块:判断异常信息选项的有效性;若有效,则记录异常信息;若无效,则触发上下文信息选项判断模块:

上下文信息选项判断模块:判断上下文信息选项的有效性;若有效,则记录上下文信息;若无效,则触发栈回溯信息选项判断模块;

栈回溯信息选项判断模块:判断栈回溯信息选项的有效性;若有效,则记录栈回溯信息,触发日志记录单元提交模块;若无效,则触发日志记录单元提交模块

日志记录单元提交模块:生成该条日志记录单元的校验码并提交一个日志记录单元作为一条日志记录的插入。

所述日志显示模块包括如下模块:

初始化状态有效性判断模块:判断日志初始化状态是否有效;若有效,则触发日志信息获取模块;若无效,则结束流程;

日志信息获取模块:获取日志地址与日志记录总条数,并计算需要显示的日志记录条数,打印显示日志头信息,触发日志迭代模块;

日志迭代模块:创建日志迭代器,再通过日志迭代器查询日志记录单元,并对日志记录单元的校验码进行校验是否有效;若有效,则触发日志打印模块;若无效,则结束流程;

日志打印模块:打印显示日志记录单元中的日志记录,返回日志迭代模块继续执行;

所述日志备份模块包括如下模块,如图6所示:

初始化状态有效性判断模块:判断日志初始化状态是否有效;若有效,则触发创建备份输出模块;若无效,则结束流程;

创建备份输出模块:在文件系统中创建备份输出文件,触发日志信息获取模块;

日志信息获取模块:获取日志地址与日志记录总条数,并计算需要备份的日志记录条数,触发头信息输出模块;

头信息输出模块:输出备份日志头信息到所述备份输出文件,触发日志迭代模块;

日志迭代模块:创建日志迭代器,再通过日志迭代器查询日志记录单元,并对日志记录单元的校验码进行校验是否有效;若有效,则触发备份输出模块;若无效,则结束流程;

备份输出模块:备份输出日志记录单元信息到文件系统中的备份输出文件,返回日志迭代模块继续执行。

所述轨迹记录模块包括如下模块:

地址设置模块:设置轨迹记录结构体地址,在轨迹记录结构体中设置一个参数,该参数在轨迹记录功能未初始化完成时为默认值,在轨迹记录功能初始化完成后,设置为另一个值。该参数作为判断轨迹记录功能是否初始化完成的标记,轨迹记录功能初始化进行前检测该值,若已进行过初始化,则跳过初始化过程,否则触发轨迹初始化模块进行初始化;

轨迹初始化模块:添加任务切换轨迹记录钩子,设置轨迹记录状态,触发轨迹记录插入模块;

轨迹记录插入模块:插入轨迹记录,判断是否日志初始化且待写入的记录数据与上次不同;若是,则将记录数据写入轨迹记录环形缓冲区;若否,则结束流程;

轨迹记录显示模块:显示轨迹记录,判断是否轨迹记录模块是否已初始化;若是,则遍历轨迹记录环形缓冲区显示轨迹记录信息,显示轨迹记录信息对应任务名;若否,则结束流程。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1