[发明专利]一种调试时代码动态更新方法有效

专利信息
申请号: 201410656737.9 申请日: 2014-11-18
公开(公告)号: CN104391717B 公开(公告)日: 2017-09-12
发明(设计)人: 张同宝;顾天晓;马晓星 申请(专利权)人: 南京大学
主分类号: G06F9/445 分类号: G06F9/445
代理公司: 南京钟山专利代理有限公司32252 代理人: 戴朝荣
地址: 210046 江苏*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 调试 时代 动态 更新 方法
【说明书】:

技术领域

发明公开了一种调试时代码动态更新方法,属于软件调试技术领域。

背景技术

软件调试是重现软件故障、定位故障根源,并最终解决软件问题的过程。调试器是用来提供调试功能的软件或硬件工具。在软件开发的过程中,调试技术是必不可少的技术,一般来说主要的调试命令包括:设定断点,单步执行,观测对象和观测堆栈信息,对于调试器的熟练使用会大大提高软件的开发效率。

当调试一个项目代码时,单步执行到错误点时,需要修改代码,修改的代码可能是各种各样的类型,这时候如果想继续调试代码,传统的方法是要重启项目,然后再单步执行到上一次调试现场,这会消耗很多时间以及增加很多重复的操作,使得软件开发的效率降低。

动态更新是从旧的版本更新到新版本的过程。图3是JavaEmailServer从1.3.1版本到1.3.2版本的更新实例,可以从图3中版本a和版本b看出三类变化:第一,是loadUser方法体的变化,第二,是setForwardedAddresses方法的参数发生了变化,第三是User类的域forwardAddresses从String []变化到EmailAddress[]。在这三种变化中,对于第三种类的域发生改变的更新类型,当更新类的实例时,一般的做法是将新类中的新增加的域初始化为系统默认的初值(比如整型初始化为0,引用初始化为null)。在这个例子中,如果User实例采用系统默认值的更新,新版本的域forwardAddresses就会被初始化为null,但是从新旧版本的对比中可以看出如果要保持更新前后实例的正确,需要将String[]类型转化为EmailAddress[]类型,这时候就需要使用迁移函数,将User实例中的String[]的forwardAddresses转换为新EmailAddress[]类型。从这个例子可以看出,对于一些更新类型,为了保证代码更新的正确性,必须提供特定的迁移器来完成更新。

现有技术中常用的调试软件包括以下几种:

1)Hotswap:虚拟机本身也支持简单的代码更新,从JDK1.4版本开始存在的调试时动态更新的方法,被称为Hotswap功能,这个功能的局限性在于只支持调试时刻对方法体的改变的更新,这样的更新在调试时是远远不够的,并不能满足所有的更新类型。

2)DCE VM:能支持任意更新的类型,但是在更新的时候,只提供默认的迁移器,也就是在对象更新的时候将新增的域初始化为系统默认的初值,从上面对图3的例子可以看出这样的更新是不正确的,缺少提供迁移器来供软件开发者参与修改,从而保证更新的正确性。

3)JRebel:一个商业的软件,官方文档没有具体说明具体的支持的动态更新机制,只是说明JRebel不是从JVM本身出发,而是监控类的字节码文件,通过字节码文件和类加载器来完成更新,不支持通过修改JVM来实现代码的更新。

发明内容

本发明所要解决的技术问题是:针对现有技术的缺陷,提供一种调试时代码动态更新方法,具体是提供一种代码在线更新的方法,使得被更新的程序不需要重新启动即可更新代码,同时提供了对于特定更新类型所需要的迁移器,保证代码更新的正确性。

本发明为解决上述技术问题采用以下技术方案:

一种调试时代码动态更新方法,包括以下步骤:

步骤一、软件开发者使用调试器调试代码;

步骤二、软件开发者在调试时更改代码并保存,触发准备更新过程,包括代码检测,生成迁移器模板类,完成迁移器模板类的修改,将更新信息传入虚拟机中;

步骤三、调试器请求虚拟机完成代码更新。

作为本发明的进一步优选方案,步骤二中所述准备更新过程的具体步骤是:

21)软件开发者使用调试器对程序进行调试,通过设断点进行单步调试;

22)调试器监听调试时代码发生改变的事件,当代码发生改变时,响应代码改变的事件,再通过检测获取当前调试代码类文件所在位置,获取更改代码之后的类文件以及更改之前的类文件,将新旧代码类文件存放到临时文夹中;

23)编译存放于临时文件夹中的新旧代码类文件,得到对应新旧代码类文件的字节码文件;

24)通过比较新旧代码的字节码文件得到更新说明文件,进而得到更新类型信息;

25)判断是否需要迁移器来完成代码更新,

当不需要时转入步骤26),否则转入27);

26)判断代码更新不需要迁移器,完成代码更新过程;

27)判断代码更新需要迁移器,生成一个迁移器模板;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410656737.9/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top