一种系统程序故障定位方法、设备及计算机可读介质技术方案

技术编号:35478496 阅读:17 留言:0更新日期:2022-11-05 16:28
本发明专利技术公开一种系统程序故障定位方法,其中,包括如下步骤:为应用程序中的每一函数和/或线程配置至少一个状态结构体的步骤S1,状态结构体包括程序执行的至少一个状态数据;根据所述函数和/或线程的数量配置共享内存的步骤S2,并配置应用程序中的每一函数和线程与所述监控机制内存共享,以及,还包括为每一函数和线程配置监控机制的步骤S3,该监控机制对应用程序的运行进行监控;其中,监控机制监控所述函数和线程,能够通过监控机制监控和记录程序调用运行的时间,并根据程序执行步骤进行定位,解决特显领域下客户程序卡死难以定位的技术问题。术问题。术问题。

【技术实现步骤摘要】
一种系统程序故障定位方法、设备及计算机可读介质


[0001]本专利技术涉及计算机应用及数据通讯
,具体地说,是涉及一种系统程序故障定位方法。

技术介绍

[0002]线程被包含在进程中,是计算机操作系统的实际运算单位,也是计算机操作系统能够进行运算调度的最小单位。从实际过程来说,单一的线程也即是进程中按照某一顺序实现控制的执行流,一个进程中往往可以并发多个线程,每一线程分别执行不同的运算任务。在早先术中,中央处理器在同一时刻只能进行单一线程的运算,而随着技术的快速革新,多线程技术很快便取代了早先技术中的单线程技术,也即,单个程序中可以同时创建多个执行流,同时运行的多个不同线程分别执行不同的任务。
[0003]随着多线程编程的发展,利用多线程编程可以最大限度调用CPU资源,但多线程编程又容易出现程序锁死、结构混乱的问题。在特种显示领域中,轨道交通司机室内的设备上运行有各种客户程序,而一种常见的故障情形,是客户程序在运行过程中容易出现卡死、锁死的情况。卡死的程序既不会报错也不会退出,且卡死情况复现没有规律。虽然,部分系统会自带有程序调试工具,例如linux系统下的gdb工具,利用该工具,可以在系统异常时查看运行环境中发生的情况,但,对于特殊领域的偶发卡死情形,系统自带工具已经无法应对。
[0004]而上述问题的根本在于,现有多线程环境下,程序出现故障卡死时,缺少明确的机制可用以指向程序运行出错的时间和位置,紧急情况下,系统无法复位会导致较严重的安全隐患,再加上,无法对出错卡死的位置进行定位,会进一步致使事后人工处理工作量显著增加。
[0005]有鉴于此,应当提供一种故障定位机制,以解决特显领域下用户程序卡死时出线的上述技术问题。

技术实现思路

[0006]针对现有技术的不足,本专利技术提供了一种能够通过监控机制监控和记录程序调用运行的时间,并根据程序执行步骤进行定位,解决特显领域下客户程序卡死难以定位的系统程序故障定位方法。
[0007]为解决以上技术问题,本专利技术采取了一种系统程序故障定位方法,其中,所述故障定位方法包括如下步骤:为应用程序中的每一函数和/或线程配置至少一个状态结构体的步骤S1,所述状态结构体包括程序执行的至少一个状态数据;根据所述函数和/或线程的数量配置共享内存的步骤S2,并配置应用程序中的每一函数和线程与所述监控机制内存共享;以及,还包括为每一函数和线程配置监控机制的步骤S3,该监控机制对应用程序的运行进行监控;其中,所述监控机制监控所述函数和线程。
[0008]作为本方案的一种优选地,其中,所述故障定位方法还包括:当出现异常时,对所述状态结构体进行保存的步骤。
[0009]作为本方案的进一步优选地,其中,所述步骤S1中,配置状态结构体的步骤具体为:每一所述函数和线程维护若干变量,所述监控机制与所述变量对应,并一对一地监控所述变量;为每一函数和线程配置心跳机制;其中,每一所述变量和与之对应的监控机制共享内存。
[0010]作为本方案又进一步优选地,其中,所述状态结构体中的变量包括标志位,前一次调用时间、心跳、程序执行标识,错误计数中的一种或几种。
[0011]作为本方案更进一步优选地,其中,所述程序执行标识包括程序执行的步骤数和程序执行的次数。
[0012]作为本方案再进一步优选地,其中,对所述状态结构体进行保存的步骤具体为:当线程和/或函数的执行出现异常时,将当前时刻所述状态结构体中各变量的数值保存。
[0013]作为本方案还进一步优选地,其中,还包括根据心跳机制的心跳信息判断应用程序的运行状态,当应用程序卡死时,关闭线程并对所述应用程序进行重启。
[0014]作为本方案又再进一步优选地,其中,配置应用程序中的每一函数和线程与所述监控机制内存共享的步骤具体为:设置共享内存地址,并初始化;设置当前时间戳,按照程序执行顺序,配置程序执行步骤,并开启监控机制挂接应用程序的共享内存地址,所述监控机制通过所述共享内存监控所述应用程序的状态。
[0015]本专利技术的另一方面,是提供一种电子设备,包括:一个或多个处理器;以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如前所述的系统程序故障定位方法。
[0016]本专利技术的又另一方面,是提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如前所述的系统程序故障定位方法。
[0017]由于以上技术方案的采用,本专利技术相较于现有技术具有如下的有益技术效果:
[0018]1、在应用程序的函数和线程中维护若干能够记录程序执行状态的变量,并且为每一变量配置与之对应的监控机制,且监控机制与其所监控的变量共享内存。当某个线程和函数执行异常时,将该函数或者进程下所有变量的状态通过日志记录,这样通过日志,对程序执行的异常步骤和内存地址进行查询,即可对程序卡死进行定位;
[0019]2、由于监控程序的介入,通过分析,只记录异常的信息,与传统的记录方式相比,大大减少日志记录内容,节省应用程序写日志的工作,减少磁盘开销。
附图说明
[0020]图1为流程图,示出了本专利技术的一个较佳实施例中所述系统程序故障定位方法的流程。
具体实施方式
[0021]下面将参考附图来描述本专利技术所述的一种系统程序故障定位方法的实施例。本领域的普通技术人员可以认识到,在不偏离本专利技术的精神和范围的情况下,可以用各种不同的方式对所描述的实施例进行修正。因此,附图和描述在本质上是说明性的,而不是用于限制权利要求的保护范围。此外,在本说明书中,附图未按比例画出,并且相同的附图标记表示相同的部分。
[0022]需要说明的是,本专利技术实施例中所使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”、“第二”仅为了表述的方便,不应理解为对专利技术实施例的限定,后续实施例对此不再一一说明。
[0023]本专利技术的较佳实施例,是针对现有技术下,特显
下,多种客户程序运行时出现卡死后无法对问题进行定位和恢复的技术问题提出的。现有技术下,程序卡死后,缺少退出和报错机制,并且复现无规律,缺少定位和恢复机制导致系统运行的稳定性始终不佳。
[0024]本专利技术的较佳实施例解决上述技术问题的思路为:
[0025]1)根据程序运行的位置和步骤,对客户程序运行状态进行监控和记录;
[0026]2)函数和线程中维护多个包含运行状态的变量,并为每个变量配置监控机制,监控机制与变量实现内存共享。
[0027]基于上述改进思路,本专利技术提出了如图1所示的系统程序故障定位方法,在图1所示的流程图中,该系统程序故障定位方法包括如下步骤:为应用程序中的每一函数和/或线程配置至少一个状态结构体的步骤S1,所述状态结构体包括程序执行的至少一个状态数据;根据所述函数和/或线程的数量配置共享内存的步骤S2,并配置应用程序中的每一函数和线程与所述监控机制内存共享;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种系统程序故障定位方法,其中,所述故障定位方法包括如下步骤:为应用程序中的每一函数和/或线程配置至少一个状态结构体的步骤S1,所述状态结构体包括程序执行的至少一个状态数据;根据所述函数和/或线程的数量配置共享内存的步骤S2,并配置应用程序中的每一函数和线程与所述监控机制内存共享;以及,还包括为每一函数和/或线程配置监控机制的步骤S3,该监控机制对应用程序的运行进行监控;其中,所述监控机制监控所述函数和线程。2.根据权利要求1所述的系统程序故障定位方法,其中,所述故障定位方法还包括:当出现异常时,对所述状态结构体进行保存的步骤。3.根据权利要求2所述的系统程序故障定位方法,其中,所述步骤S1中,配置状态结构体的步骤具体为:每一所述函数和线程维护若干变量,所述监控机制与所述变量对应,并一对一地监控所述变量;为每一函数和线程配置心跳机制;其中,每一所述变量和与之对应的监控机制共享内存。4.根据权利要求3所述的系统程序故障定位方法,其中,所述状态结构体中的变量包括标志位,前一次调用时间、心跳、程序执行标识,错误计数中的一种或几种。5.根据权利要求4所述的系统程序故障定位方法,其中,所述程序执行标识包括程序执行的步骤数和...

【专利技术属性】
技术研发人员:杨亮吴晓军黄佳琪
申请(专利权)人:苏州长风航空电子有限公司
类型:发明
国别省市:

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

1