CN114443339A - 基于双时间戳循环队列的错误日志记录方法 - Google Patents

基于双时间戳循环队列的错误日志记录方法 Download PDF

Info

Publication number
CN114443339A
CN114443339A CN202210110351.2A CN202210110351A CN114443339A CN 114443339 A CN114443339 A CN 114443339A CN 202210110351 A CN202210110351 A CN 202210110351A CN 114443339 A CN114443339 A CN 114443339A
Authority
CN
China
Prior art keywords
error
circular queue
queue
log
time stamp
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.)
Pending
Application number
CN202210110351.2A
Other languages
English (en)
Inventor
宋青
裴宇鑫
周明
金强
唐玉军
张鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Aeronautical Radio Electronics Research Institute
Original Assignee
China Aeronautical Radio Electronics Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Aeronautical Radio Electronics Research Institute filed Critical China Aeronautical Radio Electronics Research Institute
Priority to CN202210110351.2A priority Critical patent/CN114443339A/zh
Publication of CN114443339A publication Critical patent/CN114443339A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于双时间戳循环队列的错误日志记录方法,步骤1、接收到错误编号后,判断是否为第二类错误,如果此条错误编号是第二类错误日志,进入步骤2,否则进入步骤3;步骤2、在整体循环队列头指针指向的地址写入错误编号的错误日志;其中整体循环队列是非易失存储器空间中的一部分,写入整体循环队列中错误日志的格式包含错误编号、第一时间戳、第二时间戳和次数,第一时间戳是该错误初次记录的时间,第二时间戳是该错误最后一次记录的时间,次数是在第一时间戳与第二时间戳之间该错误发生的次数;步骤3、在缓冲循环队列中写入错误编号的错误日志。本发明在有限的存储空间约束下,尽可能记录更多的有用的错误日志信息。

Description

基于双时间戳循环队列的错误日志记录方法
技术领域
本发明涉及设备异常错误处理领域,具体涉及一种基于双时间戳循环队列的错误日志记录方法。
背景技术
随着航空机载电子设备的功能复杂化,性能不断提高,越来越多的航空机载设备都有驻留软件来支持航空机载设备的正常运行。在软件运行过程中,通常会设计错误日志的记录功能,该功能一般用于记录航空设备自检测结果以供飞行后的故障分析。鉴于航空机载电子设备往往无法提供大容量的存储设备存储较大数据量的日志信息,通行的做法是在非易失性存储器中开辟一个空间存放错误日志信息。简单的错误日志设计方法有两种:第一种错误日志是基于枚举全部错误类型的日志设计,即经过充分的统计分析,找出该设备可能产生的M个错误,在设计错误日志存储空间大小时,即开辟存储M条记录的存储空间。当发生错误时,记录该错误对应的错误信息到固定位置,将错误次数加1,并更新错误发生时间;第二种错误日志是基于错误发生时间的错误日志设计,即开辟N条错误日志的循环存储队列,当错误发生时,直接记录一条错误日志,当循环存储队列满时,使用新的一条错误日志替换队列尾部一条数据。第一种类型设计优点是可以记录最新的一次错误发生时间,缺点是无法捕捉到曾经发生过该错误时的具体发生时间;第二种设计的优点是可以记录最新的N条错误,缺点是在某个错误比较频繁发生时,会覆盖之前产生的所有错误日志记录。
发明内容
为解决上述问题,本发明的发明目的在于提供一种基于双时间戳循环队列的错误日志记录方法,融合了上述两种基本错误日志记录方式,在有限的存储空间约束下,尽可能记录更多的有用的错误日志信息。
本发明的发明目的通过以下技术方案实现。
一种基于双时间戳循环队列的错误日志记录方法,包含以下步骤:
步骤1、接收到错误编号后,判断是否为第二类错误,如果此条错误编号是第二类错误日志,进入步骤2,否则进入步骤3;其中,将用户更关注错误发生的准确时间的错误归为第二类错误;
步骤2、在整体循环队列头指针指向的地址写入错误编号的错误日志;其中整体循环队列是非易失存储器空间中的一部分,写入整体循环队列中错误日志的格式包含错误编号、第一时间戳、第二时间戳(内容与第一时间戳一致)和次数(次数为1),第一时间戳是该错误初次记录的时间,第二时间戳是该错误最后一次记录的时间,次数是在第一时间戳与第二时间戳之间该错误发生的次数;
步骤3、在缓冲循环队列中写入错误编号的错误日志;
其中,缓冲循环队列是内存空间的一部分,写入缓冲循环队列中错误日志的格式包含映射地址、错误编号、第一时间戳、第二时间戳和次数,其中映射地址记录的本条错误编号的错误日志在整体循环队列中的位置信息。
优选地,步骤3的写入措施为:
a)如果此条错误编号存在于缓冲循环队列,找到缓冲循环队列中指向该错误编号的日志条目,更新该条错误日志的第二时间戳,将次数加1:
b)如果此条错误编号不存在于缓冲循环队列,且缓冲循环队列已满,将缓冲循环队列中尾部的错误日志回写到整体循环队列中,并清空缓冲循环队列尾部的错误日志,然后把新的错误日志写入整体循环队列,最后把新的错误日志写入到刚清空的缓冲循环队列中空间;
c)如果此条错误编号不存在于缓冲循环队列,且缓冲循环队列未满,把新的错误日志写入缓冲循环队列。
优选地,在设备的正常任务执行周期外,设置非周期任务用来负责将缓冲循环队列中的错误日志同步到整体循环队列。
优选地,如设备产生意外掉电,利用掉电保护的时间,把缓冲循环队列中的错误日志同步到整体循环队列。
优选地,当第二类错误发生次数在一个时间周期内超过阈值,则把缓冲循环队列中的错误日志写入整体循环队列,并清空缓冲循环队列。
优选地,当整体循环队列的当前指针已经指向了缓冲循环队列中映射地址对应的位置,则将全部缓冲循环队列中错误日志写入整体循环队列,并清空缓冲循环队列。
优选地,将第二类错误的编号记录在例外队列中,通过判断错误编号是否存在于例外队列中判断错误日志是否为第二类错误。
附图说明
图1整体循环队列错误日志格式示意图。
图2缓冲循环队列错误日志格式示意图。
图3整体循环队列与缓冲循环队列工作示意图。
图4例外队列示意图。
图5错误日志记录过程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。
参见图5所示,本实施例所示的一种基于双时间戳循环队列的错误日志记录方法,包含以下步骤:
步骤1、接收到错误编号后,判断是否为第二类错误,如果此条错误编号是第二类错误日志,进入步骤2,否则进入步骤3。在本实施例中,将用户更关注一段时间内该类型错误发生次数的错误日志归为第一类错误,将用户更关注错误发生的准确时间的错误日志归为第二类错误,将第二类错误的编号记录在例外队列中,通过判断错误编号是否存在于例外队列中可以判断错误日志是否为第二类错误。
步骤2、在整体循环队列头指针指向的地址写入错误编号的错误日志。其中整体循环队列是非易失存储器空间中的一部分,写入整体循环队列中错误日志的格式如图1所示,包含错误编号、第一时间戳、第二时间戳(内容与第一时间戳一致)和次数(次数为1),第一时间戳是该错误初次记录的时间,第二时间戳是该错误最后一次记录的时间,次数是在第一时间戳与第二时间戳之间该错误发生的次数。
步骤3、在缓冲循环队列中写入错误编号的错误日志:其中,缓冲循环队列是内存空间的一部分,写入缓冲循环队列中错误日志的格式如图2所示,包含映射地址、错误编号、第一时间戳、第二时间戳和次数。其中映射地址记录的本条错误编号的错误日志在整体循环队列中的位置信息。其他格式元素的意义同整体循环队列中错误日志格式意义相同。
写入措施为:
a)如果此条错误编号存在于缓冲循环队列,找到缓冲循环队列中指向该错误编号的日志条目,更新该条错误日志的第二时间戳,将次数加1:
b)如果此条错误编号不存在于缓冲循环队列,且缓冲循环队列已满,将缓冲循环队列中尾部的错误日志回写到整体循环队列中,并清空缓冲循环队列尾部的错误日志,然后把新的错误日志写入整体循环队列,最后把新的错误日志写入到刚清空的缓冲循环队列中空间。
c)如果此条错误编号不存在于缓冲循环队列,且缓冲循环队列未满,把新的错误日志写入缓冲循环队列。
步骤4、在设备的正常任务执行周期外,设置非周期任务用来负责将缓冲循环队列中的错误日志同步到整体循环队列。
步骤5、如设备产生意外掉电,也可以利用掉电保护的时间,把缓冲循环队列中的错误日志同步到整体循环队列。
在上述步骤中,如果二类错误发生太过频繁,则设定一个阈值,当二类错误在一个时间周期内超过阈值,则把缓冲循环队列中的错误日志写入整体循环队列,并清空缓冲循环队列,以防止一类错误日志被覆盖。例如阈值定义10秒内发生40次二类错误。
如果因为第二类错误发生过多,整体循环队列的当前指针已经指向了缓冲循环队列中映射地址对应的位置,则将缓冲循环队列中该映射地址的错误日读写入整体循环队列,并清空缓冲循环队列,以防止一类错误日志被覆盖。
整体循环队列的大小根据机载设备的非易失存储器大小和其它功能使用的空间分配,计算出可以使用的存储空间,从而确定整体循环队列的大小。当设备启动时,通过恢复整体循环队列的头前指针来确定整体循环队列头的位置信息。若整体循环队列最大存储错误日志条数为P条,当整体循环队列存放的错误日志条数大于P,新的错误日志会覆盖队列尾部的错误日志,如图3所示。
缓冲循环队列也是个循环队列,缓冲循环队列的大小根据工程经验确定在内存中开辟的缓冲循环队列的大小。缓冲循环队列中存放的错误日志均为第一类错误,可记录最后产生的Q条第一类错误的错误日志的位置信息,如图4所示。缓冲循环队列在初始化时分配内存空间。当产生第一个第一类错误(假设编号为ID1)时,把这个一类错误记录到整体循环队列中,然后记录到缓冲循环队列中(填写映射地址、错误编号、时间戳1、次数);产生重复的一类错误时(假设编号仍为ID1),把这个一类错误记录到缓冲循环队列中(填写时间戳2、次数);在空闲时间把这个错误同步到非易失存储器中的整体循环队列(更新映射地址)。在产生其它第一类错误(假设编号为ID2)时,缓冲循环队列开始增长。当产生的一类错误类型大于4种时,把缓冲循环队列的头指针指向的信息写入整体循环队列中,并清空缓冲循环队列队尾指针指向的一条数据,用来开始存储新类型的错误日志数据。
例外队列存放的为该设备所有可能的第二类错误的错误编号。为了定位故障发生时间的准确时间,第二类错误日志设计关注记录错误发生的准确时间。由于这种错误数量是少数的,所以建立一个例外队列,队列仅包含第二类错误的错误编号。

Claims (7)

1.一种基于双时间戳循环队列的错误日志记录方法,包含以下步骤:
步骤1、接收到错误编号后,判断是否为第二类错误,如果此条错误编号是第二类错误日志,进入步骤2,否则进入步骤3;其中,将用户更关注错误发生的准确时间的错误归为第二类错误;
步骤2、在整体循环队列头指针指向的地址写入错误编号的错误日志;其中整体循环队列是非易失存储器空间中的一部分,写入整体循环队列中错误日志的格式包含错误编号、第一时间戳、第二时间戳和次数,第一时间戳是该错误初次记录的时间,第二时间戳是该错误最后一次记录的时间,次数是在第一时间戳与第二时间戳之间该错误发生的次数;在本步骤中,第一时间戳、第二时间戳相同,次数为1;
步骤3、在缓冲循环队列中写入错误编号的错误日志;
其中,缓冲循环队列是内存空间的一部分,写入缓冲循环队列中错误日志的格式包含映射地址、错误编号、第一时间戳、第二时间戳和次数,其中映射地址记录的本条错误编号的错误日志在整体循环队列中的位置信息。
2.根据权利要求1所述的一种基于双时间戳循环队列的错误日志记录方法,其特征在于步骤3的写入措施为:
a)如果此条错误编号存在于缓冲循环队列,找到缓冲循环队列中指向该错误编号的日志条目,更新该条错误日志的第二时间戳,将次数加1:
b)如果此条错误编号不存在于缓冲循环队列,且缓冲循环队列已满,将缓冲循环队列中尾部的错误日志回写到整体循环队列中,并清空缓冲循环队列尾部的错误日志,然后把新的错误日志写入整体循环队列,最后把新的错误日志写入到刚清空的缓冲循环队列中空间;
c)如果此条错误编号不存在于缓冲循环队列,且缓冲循环队列未满,把新的错误日志写入缓冲循环队列。
3.根据权利要求1所述的一种基于双时间戳循环队列的错误日志记录方法,其特征在于还包含:
步骤4、在设备的正常任务执行周期外,设置非周期任务用来负责将缓冲循环队列中的错误日志同步到整体循环队列。
4.根据权利要求1所述的一种基于双时间戳循环队列的错误日志记录方法,其特征在于还包含:
如设备产生意外掉电,利用掉电保护的时间,把缓冲循环队列中的错误日志同步到整体循环队列。
5.根据权利要求1所述的一种基于双时间戳循环队列的错误日志记录方法,其特征在于当第二类错误发生次数在一个时间周期内超过阈值,则把缓冲循环队列中的错误日志写入整体循环队列,并清空缓冲循环队列。
6.根据权利要求1所述的一种基于双时间戳循环队列的错误日志记录方法,其特征在于当整体循环队列的当前指针已经指向了缓冲循环队列中映射地址对应的位置,则将全部缓冲循环队列中错误日志写入整体循环队列,并清空缓冲循环队列。
7.根据权利要求1所述的一种基于双时间戳循环队列的错误日志记录方法,其特征在于,将第二类错误的编号记录在例外队列中,通过判断错误编号是否存在于例外队列中判断错误日志是否为第二类错误。
CN202210110351.2A 2022-01-29 2022-01-29 基于双时间戳循环队列的错误日志记录方法 Pending CN114443339A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210110351.2A CN114443339A (zh) 2022-01-29 2022-01-29 基于双时间戳循环队列的错误日志记录方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210110351.2A CN114443339A (zh) 2022-01-29 2022-01-29 基于双时间戳循环队列的错误日志记录方法

Publications (1)

Publication Number Publication Date
CN114443339A true CN114443339A (zh) 2022-05-06

Family

ID=81371178

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210110351.2A Pending CN114443339A (zh) 2022-01-29 2022-01-29 基于双时间戳循环队列的错误日志记录方法

Country Status (1)

Country Link
CN (1) CN114443339A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115509794A (zh) * 2022-10-20 2022-12-23 北京和欣运达科技有限公司 一种嵌入式智能设备的故障追踪方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115509794A (zh) * 2022-10-20 2022-12-23 北京和欣运达科技有限公司 一种嵌入式智能设备的故障追踪方法及系统

Similar Documents

Publication Publication Date Title
US7506314B2 (en) Method for automatically collecting trace detail and history data
US6347335B1 (en) System using a common and local event logs for logging event information generated by plurality of devices for determining problem in storage access operations
US20130018852A1 (en) Deleted data recovery in data storage systems
CN101615145B (zh) 一种提高存储器数据缓存可靠性的方法和装置
CN113111129A (zh) 数据同步方法、装置、设备及存储介质
CN104811645A (zh) 一种嵌入式录像数据存储方法
WO2012106969A1 (zh) 一种日志管理装置及方法
CN106682162A (zh) 日志管理方法及装置
US20120260138A1 (en) Error logging in a storage device
CN100392606C (zh) 一种定位虚拟操作系统内存泄漏的方法
CN114443339A (zh) 基于双时间戳循环队列的错误日志记录方法
CN111459764B (zh) 一种日志管理方法及终端
US6240529B1 (en) Debugging method and debugging apparatus for microcomputer system and recording medium on which debug program is recorded
JP2009509256A (ja) データ処理装置および作動方法
CN111143236A (zh) 一种内存映射实现队列及其数据读取和写入方法
CN111159128B (zh) 一种日志输出方法、装置和计算机可读存储介质
CN116795712A (zh) 反向调试方法、调试方法、计算设备及存储介质
US7577878B2 (en) Method for storing or transferring data using time sequencing
US6871291B2 (en) Method for recording power failure time of a computer system
CN110795031A (zh) 一种基于全闪存储的数据重删方法、装置和系统
CN115328851A (zh) 一种数据保护方法、装置、设备及介质
CN112650613B (zh) 一种错误信息处理方法、装置、电子设备及存储介质
CN100561953C (zh) 一种记录诊断数据的方法
US20210397498A1 (en) Information processing apparatus, control method, and program
US20240212783A1 (en) Method and system for detecting memory error, and device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination