摘要:内存泄漏在采用显式内存管理机制的C语言中是一种常见的代码缺陷,内存泄漏的检测方法目前主要是静态分析与动态检测.动态检测开销大,且高度依赖测试用例;静态分析目前被学术界和工业界广泛应用,但是存在大量误报,需要人工对检测结果进行确认.内存泄漏静态分析的误报通常是由于对指针、分支语句和全局变量分析的不准确性导致的.提出了一种内存泄漏的智能化检测方法,通过使用机器学习算法学习程序特征与内存泄漏之间的相关性,构建机器学习分类器,并应用机器学习分类器进一步提高内存泄漏静态分析的准确性.首先构建机器学习分类器,然后通过静态分析方法构建从内存分配点开始的Sparse Value Flow Graph(SVFG),并从中提取内存泄漏相关特征,再使用规则和机器学习分类器进行内存泄漏的检测.实验结果显示,该方法在分析指针、分支语句和全局变量时是有效的,能够提高内存泄漏检测的准确性,降低内存泄漏检测结果的误报.最后,对未来研究的可行性以及面临的挑战进行了展望.
Abstract:Memory leak is a common code bug for C programs which uses explicit memory management mechanisms. At present, the main detection methods of memory leaks are static analysis and dynamic detection. Dynamic detection has huge overhead and it is highly dependent on test cases. Static analysis is widely used by academic and industry, but there are a large number of false positives, which need to be manually confirmed. Inaccuracy in the analysis of pointers, branch statements, and global variables leads to false positives in static analysis of memory leaks. In this study, an intelligent detection method is proposed for memory leak. By using machine learning algorithms to learn the correlation between program's features and memory leaks, a machine learning classifier is built and applied to improve the accuracy of static analysis of memory leaks. Firstly, a machine learning classifier is trained. Then, the sparse value flow graph (SVFG) starting from allocation should be constructed by using the static analysis, the features related to memory leaks can be extracted from the SVFG. Lastly, the memory leaks are detected by using rules and machine learning classifier. Experimental results show that the proposed method is effective in analyzing pointers, branch statements, and global variables, and can reduce the false positives of memory leak detection. At the end of this paper, the feasibility of future research and the upcoming challenges are presented.
PDF全文下载地址:
http://jos.org.cn/jos/article/pdf/5715
删除或更新信息,请邮件至freekaoyan#163.com(#换成@)
C程序内存泄漏智能化检测方法
本站小编 Free考研考试/2022-01-02
相关话题/实验 语言 代码 测试 确认
代码坏味对软件演化影响的实证研究
摘要:代码坏味是指程序设计中存在的不良设计模式或设计缺陷.坏味的存在,被认为会阻碍软件的演化与维护.近年来,研究人员致力于探究坏味产生的影响以及坏味与软件演化之间的关系.已有研究表明,代码坏味会随着软件的演化而不断发生变化.通常,软件的演化将涉及源文件的增加、修改与删除这3类具体操作,了解代码坏味与 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02敏感变量和感知机结合的测试预言生成方法
摘要:测试预言生成技术是软件工程测试领域的研究热点之一.没有可以利用的历史测试用例是目前大部分测试预言生成技术的普遍假设,但是这种假设会使我们错过利用现有部分测试用例协助自动生成新测试用例预言的机会.在已知部分测试用例集的情况下,提出了基于敏感变量和线性感知机的新测试用例的测试预言自动生成方法.首先 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02面向持续集成测试优化的强化学习奖励机制
摘要:持续集成环境下的测试存在测试用例集变化大、测试时间有限和快速反馈等需求,传统的测试优化方法难以适用.强化学习是机器学习的一个重要分支,其本质是解决序贯决策问题,可以用于持续集成测试优化.但现有的基于强化学习的方法中,奖励函数计算只包括测试用例在当前集成周期的执行信息.从奖励函数设计和奖励策略两 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02基于图嵌入的软件项目源代码检索方法
摘要:源代码检索是软件工程领域的一项重要研究问题,其主要任务是检索和复用软件项目API(applicationprograminterface,应用程序接口).随着软件项目的规模越来越大、越来越复杂,当前,源代码检索一方面需要提高基于自然语言API查询的准确性,另一方面需要定位和展示目标API及其相 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02企业级海量代码的检索与管理技术
摘要:在大型IT企业中,尤其像Google或者百度,代码搜索已是软件开发过程中不可或缺且频繁的活动,其通过借鉴或复用已有代码,加速开发过程的速度.多年以来,已有大量的研究人员关注代码搜索,且设计出很多优秀的工具.但是已有的研究和工具主要是在小规模或者编程语言单一的代码数据集上,没有从企业实际搜索需求 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02代码克隆检测研究进展
摘要:代码克隆(codeclone),是指存在于代码库中两个及以上相同或者相似的源代码片段.代码克隆相关问题是软件工程领域研究的重要课题.代码克隆是软件开发中的常见现象,它能够提高效率,产生一定的正面效益.但是研究表明,代码克隆也会对软件系统的开发、维护产生负面的影响,包括降低软件稳定性,造成代码库 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02持续集成测试用例集优化综述研究
摘要:基于互联网的软件开发要求产品快速迭代,同时保持产品的质量,其关键的环节就是持续集成.持续集成通过自动化测试来保证集成到主干的代码质量.持续集成时的测试用例选择是一个非常有挑战性的问题.如果运行所有的测试用例,需要消耗大量的计算资源,并造成测试反馈周期过长.如果选择的测试用例集不合适,又不足以覆 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02中央银行数字货币原型系统实验研究
摘要:数字货币的出现被视为货币形态的又一次重大革命,有望成为数字经济时代的主流通货和重要金融基础设施.中央银行推动发行央行数字货币(centralbankdigitalcurrency,简称CBDC)势在必行.根据中国人民银行法定数字货币原型系统实验,探索了二元模式下法定数字货币发行、转移、回笼闭环 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02融合结构与语义特征的代码注释决策支持方法
摘要:代码注释是辅助编程人员理解源代码的有效手段之一.高质量的注释决策不仅能够覆盖软件系统中的核心代码片段,还能避免产生多余的代码注释.然而在实际开发中,编程人员往往缺乏统一的注释规范,大部分的注释决策都取决于个人经验以及领域知识.对于新手程序员来说,注释决策显然成为一项重要而艰巨的任务.为了减少编 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02代码文件贡献组成模式的分析
摘要:软件开发过程中,同一代码文件经常由多名开发者共同开发和维护,各个开发者向文件贡献了不同的代码量,使之形成特有的贡献组成.代码文件的贡献组成是否合理,直接影响开发者的任务分配,进而影响软件质量和开发效率.对于不同类型的代码文件,如何刻画并确定其合理的贡献组成模式,成为一个亟待解决的问题.协同开发 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02