[发明专利]一种空指针异常的自动故障定位方法无效
申请号: | 201210449481.5 | 申请日: | 2012-11-12 |
公开(公告)号: | CN102981953A | 公开(公告)日: | 2013-03-20 |
发明(设计)人: | 姜淑娟;于巧;张艳梅;刘颖祺 | 申请(专利权)人: | 中国矿业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 高桂珍 |
地址: | 221000 江苏省徐州市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 指针 异常 自动 故障 定位 方法 | ||
技术领域
本发明涉及一种软件故障定位技术,尤其是一种空指针异常的自动故障定位方法。
背景技术
随着软件规模的扩大和复杂程度的提高,对软件健壮性、稳定性和可靠性的要求越来越高,软件的自动故障定位技术也越来越受到开发人员的关注。Java的异常可以分为两类:应用异常(在应用程序中根据异常条件显式地引发)和运行时异常(由Java的实时环境隐式地引发)。目前针对应用异常的研究有很多,例如对应用异常进行分析,为程序的测试、维护等任务为开发人员提供有价值的信息,但针对运行时异常的研究很少。由于运行时异常的引发不可预测,所以开发人员很少为运行时异常设计处理程序,因而运行时异常一旦发生,程序很难通过自身的异常处理机制来处理,经常需要人工的干预来检查并定位引发异常的根源。因此当在程序的执行过程中引发运行时异常时,如果没有匹配的异常处理程序来处理,程序立即终止。
空指针异常(java.lang.NullPointerException)是Java异常中很常见的一种运行时异常。在Java中对值为null的对象调用任何方法,都会引发空指针异常,空指针异常是Java中最难查找和调试的一种异常,因此查找空指针异常的引发原因、并进行定位是一个至关重要的问题。仅仅使用静态方法来检查程序潜在故障的方法有很多,但这些方法大多要求用户提供程序的注解且无法解决静态分析结果不精确的问题。采用静态分析与动态信息相结合的方法是解决静态分析结果不精确问题的一个很有效的方法,但这些方法用于收集动态信息需要花费很大的代价。
发明内容
为了空指针异常现有的静态分析方法存在的不足,本发明提供一种空指针异常的自动故障定位方法,采用静态分析和实时堆栈信息相结合的方法,自动定位引发空指针异常的根源,既克服了单独使用静态分析方法导致分析结果不精确的缺陷,又弥补了实时堆栈信息过于粗糙无法单独应用的不足,同时不需要花费代价收集动态信息。将该方法应用到开放源码项目中,实验结果表明该方法有效。
本发明解决其技术问题所采用的技术方案是:该空指针异常的自动故障定位方法分为三个步骤:(1)程序切片,(2)故障定位,包括对切片后的程序进行空指针分析和别名分析,(3)可视化;在步骤(1),从空指针异常的引发点开始做后向的静态切片,利用实时堆栈信息和程序构建系统依赖图,计算系统依赖图的可达性即可获得程序切片;首先使用实时堆栈信息分析程序中方法的执行情况,然后依据方法的执行情况对执行过的方法进行分析,而忽略那些没有执行的方法,从而缩小系统依赖图的大小,降低静态切片的时间和空间消耗,并提高切片的精度;在步骤(2),利用开源软件Soot对切片后的程序进行静态分析:首先进行空指针分析,找出代码中可能为空值的引用型变量并将其标出,以便于找到引发空指针异常的错误值来源,然后再针对引发空指针异常的对象进行别名分析,充分考虑了别名对引用型变量指向信息的影响,便于能进一步锁定引发空指针异常的错误语句,从而提高空指针异常故障定位的精度并降低误报率;在步骤(3),利用自行开发的可视化工具CodeDia显示分析结果,有利于进行更深入的分析和后期的故障修复工作。
本发明的有益效果是:采用静态分析和实时堆栈信息相结合的方法,自动定位引发空指针异常的根源,既克服了单独使用静态分析方法导致分析结果不精确的缺陷,又弥补了实时堆栈信息过于粗糙无法单独应用的不足,同时不需要花费代价收集动态信息。将该方法应用到开放源码项目中,实验结果表明该方法有效。
附图说明
下面结合附图对本发明作进一步说明。
图1是本发明的系统模型。
图2是本发明的实施例可视化显示结果。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国矿业大学,未经中国矿业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210449481.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种海水制盐机
- 下一篇:骨质增生配方及应用方法