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调试器向函数出入口添加断点,即可在运行过程中输出变量 ...
【技术特征摘要】
1.一种软件运行时故障传播路径的获取方法,其特征在于:该方法具体步骤如下:步骤一、软件动态运行时数据收集S1.1、确定所要收集的数据类型在Linux下,gdb调试器通过命令获取寄存器信息,堆栈信息、内存信息、反汇编信息;入参、出参、返回值都可以通过gdb调试器的方式获取到;使用SrcML静态分析工具对待监控代码进行静态分析,在输出的xml文件中通过字符检索的方式提取出全局变量名称,进而能够在gdb调试器中直接监控对应的全局变量值;S1.2、对目标软件进行代码插桩利用gcc编译器的插桩功能,对函数出入口进行标记,并通过gdb调试器向函数出入口添加断点,即可在运行过程中输出变量信息;S1.3、监控程序运行时数据并记录编写gdb文件,将设置断点语句和监控语句写入其中,进行步进调试,将显示内容输出至文本文档中,添加逻辑使其直到程序运行终止时输出结束;编写shell脚本文件,将gcc编译插桩钩子函数和运行gdb的过程写入可执行程序中,即可实现插桩、监控和输出的自动化;步骤二、基于数据对比分析的故障传播路径获取方法S2.1、数据预处理利用字符匹配方法对前述步骤得到的数据进行关键信息提取;将匹配好的信息以嵌套数组的形式存入数组中,方便最终的处理;S2.2、通过比较分析数据获得故障传播路径对于同一个函数模块,在相同输入的前提下,无论运行多少次,理论上输出都是相同的;基于这个假设,将正常测试用例输入得到的输出文件和故障测试用例输入得到的输出文件进行比较,则故障输出相对于正常输出中不同的部分即为故障所经过的部分;分析输出文件,提取这些部...
【专利技术属性】
技术研发人员:陆民燕,李松正,孔士溢,李璐祎,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。