软件故障定位方法及系统技术方案

技术编号:23512565 阅读:27 留言:0更新日期:2020-03-17 23:57
本发明专利技术公开了一种软件故障定位方法及系统,涉及软件故障诊断领域,该方法包括以下步骤:设置操作系统的保留内存;根据运行场景,对待检测的软件的进程的关键数据进行筛选,确定所需要跟踪的关键数据及其采集频率;提取需要跟踪的关键数据,并将其存储在保留内存中,利用存储在保留内存中的关键数据对软件的故障进行定位。本发明专利技术无需软件调用给定的调试库,能以极小的开销记录软件执行过程中的各类供分析的数据。

Software fault location method and system

【技术实现步骤摘要】
软件故障定位方法及系统
本专利技术涉及软件故障诊断领域,具体涉及一种软件故障定位方法及系统。
技术介绍
Linux操作系统在整个开源界的贡献下,提供了一些故障定位的手段,比如perf、ftrace等工具,其中perf是一款Linux性能分析工具,ftrace工具的作用是帮助开发人员了解Linux内核的运行时行为,以便进行故障调试或性能分析。这类工具开发时主要面向x86体系开发,其运行环境特点是性能强、存储资源丰富,比如高性能服务器,故相关工具开发时主要考虑的是定位问题的能力,对于性能的影响不是主要关注的方向;但是电信设备通常使用嵌入式处理器,其处理能力、存储资源均有限,即便是在研发场景下,运行相关工具都很困难,使用它们定位故障并不可行。随着电信设备的发展,电信设备的软件的复杂度以几何级数增加,而CGL(电信运营级Linux操作系统)的引入对电信设备的可靠性提供了基础的保障,但实际电信设备运行时,始终潜在未检出、未定位的软、硬件问题,由于是现网运行环境,故障定位手段有限,单凭上层软件自身的日志部分疑难问题很难抓住有效信息,尤其是疑难、偶现问题更加难以定位。另外,通常软件会存在调试版本、发布版本,电信级设备因为其设备体积与成本约束,现网运行设备通常会使用发布版本,发布版本下没有调试信息,进一步弱化了现网软、硬件故障诊断能力,而即使将调试版本放到工程使用,由于调试版本存在开销,运行效率上会有不利影响。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种软件故障定位方法,其无需软件调用给定的调试库,能以极小的开销记录软件执行过程中的各类供分析的数据。为达到以上目的,本专利技术采取的技术方案是:一种软件故障定位方法,该方法包括以下步骤:设置操作系统的保留内存;根据运行场景,对待检测的软件的进程的关键数据进行筛选,确定所需要跟踪的关键数据及其采集频率;提取需要跟踪的关键数据,并将其存储在保留内存中,利用存储在保留内存中的关键数据对软件的故障进行定位。在上述技术方案的基础上,所述方法还包括使用压缩算法对存储在保留内存中的关键数据进行压缩的步骤。在上述技术方案的基础上,设置操作系统的保留内存,具体包括:根据操作系统的实际内存以及待检测的软件的规模确定保留内存的大小。在上述技术方案的基础上,所述关键数据包括进程号、进程内存空间使用情况、进程的调度情况、进程的子线程数量、子线程调度情况、进程所发出的信号和/或进程所接收的信号,对每类关键数据的跟踪均设置开关,通过开关对关键数据进行筛选。在上述技术方案的基础上,根据运行场景,对待检测的软件的进程的关键数据进行筛选,确定所需要跟踪的关键数据,具体包括以下步骤:在研发场景下,开启所有关键数据跟踪的开关;在集成测试、中试和现网场景下,根据需要排查的疑难问题,开启对应的关键数据跟踪的开关。在上述技术方案的基础上,在研发场景下,关键数据的采集频率为每10ms采集一次;在集成测试场景下,关键数据的采集频率为每1s采集一次;在中试和现网场景下,关键数据的采集频率为每10s采集一次。与此同时,本专利技术的另一个目的在于提供一种软件故障定位系统,其无需软件调用给定的调试库,能以极小的开销记录软件执行过程中的各类供分析的数据。为达到以上目的,本专利技术采取的技术方案是:一种软件故障定位系统,包括:保留内存设置模块,其用于设置操作系统的保留内存;进程信息管理模块,其用于根据运行场景,对待检测的软件的关键数据进行筛选,确定所需要跟踪的关键数据及其采集频率;信息提取模块,其用于提取需要跟踪的关键数据,并将其存储在所述保留内存中;以及故障定位模块,其用于利用存储在保留内存中的关键数据对软件的故障进行定位。在上述技术方案的基础上,所述软件故障定位系统还包括保留内存管理模块,所述保留内存管理模块用于使用压缩算法对存储在保留内存中的关键数据进行压缩。在上述技术方案的基础上,所述保留内存设置模块根据操作系统的实际内存以及待检测的软件的规模确定保留内存的大小。在上述技术方案的基础上,所述关键数据包括进程号、进程内存空间使用情况、进程的调度情况、进程的子线程数量、子线程调度情况、进程所发出的信号和/或进程所接收的信号,所述进程信息管理模块对每类关键数据的跟踪均设置开关,所述开关用于筛选所述关键数据。与现有技术相比,本专利技术的优点在于:本专利技术软件故障定位方法,通过对关键数据的跟踪和提取,即采用的是数据产生的方法,和传统的在存在疑难问题后,针对具体的问题,采用搜集、分析数据的方法相比,无需软件调用给定的调试库,即软件层面无需做配置,不增加软件的复杂度。此外,基于进程管理信息,并根据运行场景,确定并跟踪所需要跟踪的进程的关键数据,能够降低整机性能的负面影响。根据运行场景,对所需要提取的关键数据设置采集频率,从而能够根据实际情况来控制数据记录的资源开销。附图说明图1为本专利技术实施例中软件故障定位方法的流程图。具体实施方式以下结合附图及实施例对本专利技术作进一步详细说明。参见图1所示,本实施例提供一种软件故障定位方法,该方法包括以下步骤:S1.设置操作系统的保留内存;Linux中保留内存(Reservedmemory)是指把系统中的一部分内存保留起来,内核不会为它建立页表。本实施例中,通过设置内核启动参数memmap设置系统的保留内存,保留内存的大小根据操作系统的实际内存大小以及具体软件规模确定,通常使用不超过64M,可以满足大部分需求,本实施例中为16M。S2.根据运行场景,对待检测的软件的进程的关键数据进行筛选,确定所需要跟踪的关键数据及其采集频率;通常来说,在进行软件故障定位时,需要通过系统服务对外提供控制接口,便于告知所需关注的软件的名称、进程号等关键信息。将软件对应的进程的名称、最大管理的进程数量写入进程管理信息。在本实施例中,采用的做法是开发进程信息管理驱动内核态驱动(process_info_mananger.ko),提供进程信息管理方法:即对外“输出给”用户使用时,向/proc下生成需要的节点,/proc也就是proc节点,向/proc下生成需要的节点,比如管理最大监视进程数的节点、管理进程名的节点、使能、关闭本功能的节点等等。生成节点的方法是采用Linux操作系统的内核接口,生成的节点本身完成会告知所需关注的软件的名称、进程号等关键信息的功能。具体而言,比如:(1)添加管理最大监视进程数的节点:/proc/track_process_info/max_track_number此条目允许通过下面的方法写入最大跟踪进程数目,如:echo2>/proc/track_process_info/max_track_number(2)添加管理进程名本文档来自技高网...

【技术保护点】
1.一种软件故障定位方法,其特征在于,该方法包括以下步骤:/n设置操作系统的保留内存;/n根据运行场景,对待检测的软件的进程的关键数据进行筛选,确定所需要跟踪的关键数据及其采集频率;/n提取需要跟踪的关键数据,并将其存储在保留内存中,利用存储在保留内存中的关键数据对软件的故障进行定位。/n

【技术特征摘要】
1.一种软件故障定位方法,其特征在于,该方法包括以下步骤:
设置操作系统的保留内存;
根据运行场景,对待检测的软件的进程的关键数据进行筛选,确定所需要跟踪的关键数据及其采集频率;
提取需要跟踪的关键数据,并将其存储在保留内存中,利用存储在保留内存中的关键数据对软件的故障进行定位。


2.如权利要求1所述的软件故障定位方法,其特征在于,所述方法还包括使用压缩算法对存储在保留内存中的关键数据进行压缩的步骤。


3.如权利要求1所述的软件故障定位方法,其特征在于,设置操作系统的保留内存,具体包括:
根据操作系统的实际内存以及待检测的软件的规模确定保留内存的大小。


4.如权利要求1所述的软件故障定位方法,其特征在于,
所述关键数据包括进程号、进程内存空间使用情况、进程的调度情况、进程的子线程数量、子线程调度情况、进程所发出的信号和/或进程所接收的信号,对每类关键数据的跟踪均设置开关,通过开关对关键数据进行筛选。


5.如权利要求4所述的软件故障定位方法,其特征在于,根据运行场景,对待检测的软件的进程的关键数据进行筛选,确定所需要跟踪的关键数据,具体包括以下步骤:
在研发场景下,开启所有关键数据跟踪的开关;
在集成测试、中试和现网场景下,根据需要排查的疑难问题,开启对应的关键数据跟踪的开关。


6.如权利要求5所述的软件故障...

【专利技术属性】
技术研发人员:尹淇
申请(专利权)人:烽火通信科技股份有限公司
类型:发明
国别省市:湖北;42

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

1