Software debugging remains to be an important technique to improve the correctness of programs. As debugging is generally tedious and time-consuming, better automation of debugging is desirable. Existing automatic debugging techniques, which are mainly based on program analyses, have alleviated this problem to some extent. However, there exist some intrinsic limitations of this kind of techniques. Meanwhile, machine learning-based techniques have been used extensively in software engineering and showed promising results of their applications to fine-grained activities, such as software debugging. By applying machine learning and statistical analysis techniques to software debugging, our research proposes a suite of novel automatic debugging techniques to support the whole process of debugging. Specifically, our research builds corresponding models by applying techniques, including artificial neural network, association rule mining, nearest neighbor query, etc., to the data collected through static analyses, runtime dynamic monitoring, and programmers' behavior recording. Then the models are used to support software debugging in five aspects: static warning prioritization, fault localization of large-scale systems, concurrency bug reproduction, automatic breakpoint recommendation, and automatic program repair. Our research can significantly enhance the automation of software debugging, improve the efficiency of the debugging process and thus reduce the cost of software maintenance.
软件调试是提高程序正确性的重要手段,但其自动化程度仍有待提高。已有的基于程序分析的自动调试方法虽然取得了一定的成果,但存在其固有的局限性。同时,机器学习方法已广泛应用于软件工程领域,并在软件调试等细粒度的工程活动中展现出良好的应用前景。本课题通过将机器学习及统计分析的方法应用到软件调试过程中,提出一套新的自动化调试技术,用于支持整个软件系统的调试过程。该技术采用人工神经网络、关联规则学习、最近邻搜索等机器学习方法,基于程序代码的静态数据、程序运行时的动态数据以及程序员在调试过程中所使用的信息构建相应的模型,提供五个方面的自动化以及半自动化的调试功能:静态警告排序、大规模程序的缺陷定位、并发程序的错误重现、自动推荐断点和程序自动修复。该技术能大大提高软件调试的自动化程度,提高调试过程的效率,降低软件维护的成本。
软件调试是提高程序正确性的重要手段,但其自动化程度仍有待提高。已有的基于程序分析的自动调试方法虽然取得了一定的成果,但存在其固有的局限性。同时,机器学习方法已广泛应用于软件工程领域,并在软件调试等细粒度的工程活动中展现出良好的应用前景。本课题通过将机器学习及统计分析的方法应用到软件调试过程中,提出一套新的自动化调试技术,用于支持整个软件系统的调试过程。该技术采用人工神经网络、关联规则学习、最近邻搜索等机器学习方法,基于程序代码的静态数据、程序运行时的动态数据以及程序员在调试过程中所使用的信息构建相应的模型,提供五个方面的自动化以及半自动化的调试功能:静态警告排序、大规模程序的缺陷定位、并发程序的错误重现、自动推荐断点和程序自动修复。该技术能大大提高软件调试的自动化程度,提高调试过程的效率,降低软件维护的成本。本课题共发表国际杂志论文5篇(包含2篇尚未正式出版的被接收论文,其中SCI索引5篇)、国际会议论文10篇(其中包括CCF A 类会议:PLDI 一篇、ASE 三篇和CCF B类会议:SONAR 两篇、ICPC 一篇),以及国内核心期刊论文1篇(计算机学报)。在 CCF B类会议23rd IEEE International Conference on Software Analysis, Evolution, and Reengineering (SANER 2016) 上发表的论文 “Efficient and Precise Dynamic Slicing for Client-Side JavaScript Programs” 获得大会的最佳论文提名奖(Best Paper Candidate Award)。
{{i.achievement_title}}
数据更新时间:2023-05-31
玉米叶向值的全基因组关联分析
正交异性钢桥面板纵肋-面板疲劳开裂的CFRP加固研究
硬件木马:关键问题研究进展及新动向
基于SSVEP 直接脑控机器人方向和速度研究
小跨高比钢板- 混凝土组合连梁抗剪承载力计算方法研究
基于机器学习的软件度量分析
软件崩溃的分析,聚类和调试技术研究
面向运行环境依赖缺陷的软件自动化调试技术研究
基于机器学习的控制型软件安全性度量方法