[发明专利]基于回放的代码调试方法有效
申请号: | 201610954150.5 | 申请日: | 2016-11-03 |
公开(公告)号: | CN108021495B | 公开(公告)日: | 2021-05-14 |
发明(设计)人: | 蒋欣欣;张杨;闫帅 | 申请(专利权)人: | 北京计算机技术及应用研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 刘东升 |
地址: | 100854*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 回放 代码 调试 方法 | ||
本发明涉及一种基于回放的代码调试方法,属于计算机软件技术领域。本发明通过插桩、追踪与记录以及回放的三步式的代码调试策略,消除了由并行程序中多个进程并行执行导致的并行程序在运行过程中的不确定性,定位了错误代码,实现了代码的确定性回放,能够明显提高代码调试的效率和准确度,改进了软件研发的质量,为并行程序调试工作提供了方法参考。
技术领域
本发明涉及计算机软件技术领域,具体涉及一种基于回放的代码调试方法。
背景技术
在软件开发过程中,代码调试作为保证程序有效性、正确性的关键环节,被给予高度的重视,在一般的软件开发过程中,调试成本和时间占到整个软件项目的50%以上。美国国家标准技术研究所(NIST)收集的资料显示,代码调试能显著降低软件故障引发的损失,约能弥补整体损失的33%左右。因此,对代码调试技术的深入研究对提高软件开发效率,保证软件开发质量起着至关重要的作用。
针对代码调试问题,目前应用最为普遍的是程序切片技术。程序切片技术是一种对程序进行分解的代码分析技术,在程序理解、程序分析、调试、软件测试以及维护等诸多领域发挥着重要的作用。根据其实现方式可以进一步分为静态切片和动态切片两种。静态切片是考虑程序所有可能的执行情况,获取程序中可能改变某个特定变量值的所有可执行语句,当调试过程中发现某个变量值出错时,可以只检查这个变量的静态切片相关代码,从而避免检查整个程序。基于动态切片的方法,只考虑某个具体输入程序的执行路径,该路径由直接或间接影响某个变量值的所有语句和谓语组成。该方法使得动态切片中的代码量比静态切片有了大大的减少,减小了查找范围,从一定程度上提高了代码调试的效率。又有学者提出用执行切片代替动态切片的方法。执行切片的含义即是某个测试用例所执行的所有语句。通过对出错用例的观察,分析其所有的执行代码,从而确定程序的执行切片。程序切片技术,可以为开发人员缩小代码出现错误的范围,降低软件开发人员在调试过程中要分析的代码量。
虽然静态切片方法能够定位到错误代码,但是该方法由于无法准确获取程序真正执行的信息,一些实际执行中不会对变量值造成影响的代码也可能被引入到静态切片集合中,造成静态集合过大,明显降低了代码调试的效率;而对于动态切片方法,该方法虽然从一定程度上较少了代码查找范围,但计算量大,并且要求较大的存储空间来存储程序执行信息,占用内存大;执行切片方法虽然从一定程度上解决了动态切片内存占用过大的问题,但是对所有代码的分析无疑又增加了代码调试人员的工作量。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:为适应由于代码规模增长、软件结构并行化带来的代码调试技术变化带来的需求,提高代码调试效率和精确度。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于回放的代码调试方法,包括以下步骤:
S1、通过识别插桩点,在插桩点植入探针,对源程序进行插桩,为代码回放做准备;
S2、应用向量时间戳标识并行程序的每一个同步事件,进行同步事件的追踪与记录;
S3、进行并行程序的确定性回放。
优选地,步骤S1具体包括以下步骤:
源程序插桩:采用将源程序中的标准库函数替换为自定义函数的方法进行源程序插桩;
捕获动态信息:将插桩后的源程序进行编译和链接,运行程序,随着探针的逐步插入,记录探针抛出的动态信息,写进事件记录库;
数据处理与分析:通过对所述事件记录库中的数据进行提取和分析,揭露程序内部的行为和特征,为代码回放做准备。
优选地,步骤S2具体包括以下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京计算机技术及应用研究所,未经北京计算机技术及应用研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610954150.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:可移动景观建筑物的施工方法
- 下一篇:气动液体混合罐