一种软件运行时故障传播路径的获取方法技术

技术编号:20944193 阅读:48 留言:0更新日期:2019-04-24 02:16
本发明专利技术公开一种软件运行时故障传播路径的获取方法:步骤一、软件动态运行时数据收集,具体包括:确定所要收集的数据类型;对目标软件进行代码插桩;监控程序运行时数据并记录;步骤二、基于数据对比分析的故障传播路径获取方法,具体包括:数据预处理;通过比较分析数据获得故障传播路径。本发明专利技术能够在Linux环境下获取C语言程序在故障运行时的故障传播路径。可以帮助软件工程师以路径为线索,快速准确地定位软件故障的所在处,降低维护成本;综合同一程序的多个故障传播路径分析,可以得出程序容易产生故障的模块位置,有助于软件工程师改进易错模块,提高软件可靠性;对软件动态运行的监控还可以为软件提供失效报警的作用。

A Method of Obtaining Fault Propagation Path in Software Runtime

The invention discloses a method for acquiring fault propagation path during software runtime: step 1, data collection during software dynamic runtime, which includes: determining the data type to be collected; code piling for the target software; monitoring program runtime data recording; step 2, fault propagation path acquisition method based on data comparative analysis, including data preprocessing. Fault propagation path is obtained by comparing and analyzing data. The invention can acquire the fault propagation path of C language program when it runs in the Linux environment. It can help software engineers locate software faults quickly and accurately and reduce maintenance costs by taking path as clue. By analyzing multiple fault propagation paths of the same program, we can get the location of modules that are prone to faults, which can help software engineers improve error-prone modules and improve software reliability. The monitoring of software dynamic operation can also provide software. The function of failure alarm.

【技术实现步骤摘要】
一种软件运行时故障传播路径的获取方法
本专利技术提供一种软件运行时故障传播路径的获取方法,以提升软件可靠性,属于软件维护

技术介绍
随着计算机与网络技术的迅猛发展,人们对软件功能和性能的需求日益提高,软件结构日益复杂化,催生了复杂软件密集型系统的形成。这样的软件系统往往内部逻辑复杂,软硬件之间信息交互频繁,使用寿命很长,软件故障的复杂程度相应增加。如何保证复杂系统软件运行的可靠性,成为了当今研究的热点问题。软件工程领域的研究者认为,软件开发过程引入软件产品中的错误是导致软件发生失效的根本原因,而错误最终导致失效发生则需要故障传播这一必要条件。前序软件模块产生的故障,通过与后序软件模块之间的联系传播,最终导致软件产生故障,这一过程即为软件故障传播行为。基于软件故障传播路径,软件开发者可以迅速地定位到故障的发生位置,排除故障,减少软件错误。在软件可靠性设计过程中,我们通过对软件故障传播路径进行分析,能够获得软件故障的传播路径,从而得到复杂软件系统的薄弱环节,帮助改进软件的可靠性设计,还可以在传播路径中对故障采取预防、预警措施。现有的代码层面的软件故障技术,大多是针对软件故障的定本文档来自技高网...

【技术保护点】
1.一种软件运行时故障传播路径的获取方法,其特征在于:该方法具体步骤如下:步骤一、软件动态运行时数据收集S1.1、确定所要收集的数据类型在Linux下,gdb调试器通过命令获取寄存器信息,堆栈信息、内存信息、反汇编信息;入参、出参、返回值都可以通过gdb调试器的方式获取到;使用SrcML静态分析工具对待监控代码进行静态分析,在输出的xml文件中通过字符检索的方式提取出全局变量名称,进而能够在gdb调试器中直接监控对应的全局变量值;S1.2、对目标软件进行代码插桩利用gcc编译器的插桩功能,对函数出入口进行标记,并通过gdb调试器向函数出入口添加断点,即可在运行过程中输出变量信息;S1.3、监控...

【技术特征摘要】
1.一种软件运行时故障传播路径的获取方法,其特征在于:该方法具体步骤如下:步骤一、软件动态运行时数据收集S1.1、确定所要收集的数据类型在Linux下,gdb调试器通过命令获取寄存器信息,堆栈信息、内存信息、反汇编信息;入参、出参、返回值都可以通过gdb调试器的方式获取到;使用SrcML静态分析工具对待监控代码进行静态分析,在输出的xml文件中通过字符检索的方式提取出全局变量名称,进而能够在gdb调试器中直接监控对应的全局变量值;S1.2、对目标软件进行代码插桩利用gcc编译器的插桩功能,对函数出入口进行标记,并通过gdb调试器向函数出入口添加断点,即可在运行过程中输出变量信息;S1.3、监控程序运行时数据并记录编写gdb文件,将设置断点语句和监控语句写入其中,进行步进调试,将显示内容输出至文本文档中,添加逻辑使其直到程序运行终止时输出结束;编写shell脚本文件,将gcc编译插桩钩子函数和运行gdb的过程写入可执行程序中,即可实现插桩、监控和输出的自动化;步骤二、基于数据对比分析的故障传播路径获取方法S2.1、数据预处理利用字符匹配方法对前述步骤得到的数据进行关键信息提取;将匹配好的信息以嵌套数组的形式存入数组中,方便最终的处理;S2.2、通过比较分析数据获得故障传播路径对于同一个函数模块,在相同输入的前提下,无论运行多少次,理论上输出都是相同的;基于这个假设,将正常测试用例输入得到的输出文件和故障测试用例输入得到的输出文件进行比较,则故障输出相对于正常输出中不同的部分即为故障所经过的部分;分析输出文件,提取这些部...

【专利技术属性】
技术研发人员:陆民燕李松正孔士溢李璐祎
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

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

1