增强jpda以进行java程序的调试开发(转自taobao开发博客)

     在平常的开发过程中,我们经常需要在项目已经运行的情况下,修改java代码,并在不重新启动web容器(如tomcat)的情况下,进行hotswap调试开发。这是由java的jpda功能来提供的。然而,默认的jpda只允许方法内部实现的修改,对于增加方法,删除方法等操作,是不支持的,这种情况下必须重新启动web容器再进行调试开发。而通过修改jvm,来增加java的调试,就可以达到默认的jvm所不能达到的效果。dcevm就是这么一个组件,它通过替换jvm来实现增加的jpda。
    本文转自taobao中间件开发博客,原文地址为:hotswap 用户手册.

    关于hotswap(该补丁的网址http://ssw.jku.at/dcevm/)

    Hotswap  是一个允许在运行状态下无限制的修改加载类文件的Java虚拟机补丁。当前java虚拟机的动态加载机制只允许修改类的方法体,而打了hotswap补丁以后,可以增加,删除类属性,方法,甚至可以改变一个类的父类。

    Hotswap补丁是基于GPL v2.0开源协议的。你可以通过windows,linux,mac os下载hotswap 补丁的源代码或者可执行文件。

    安装hotswap

    警告: 该补丁目前还处于试验阶段. 当该补丁用于调试java程序使用是,是相当稳定的。但我们不提倡在生产环境中使用该补丁。

    现在提供了 32位, 64位 Windows虚拟机, 32位 Mac OS的 (从这里获得), 和32位 Linux 虚拟机的补丁. 所有的修改基于 JDK7-b102版本。
    安装程序   
 

    该补丁不仅能打在java7上,且打到java 6上,也一样正常工作。

    在windows 启动安装程序,在控制台输入:
    > java -jar dcevm-0.2-win.jar

    在Mac OS启动安装程序,终端输入:
    $ sudo java -jar dcevm-0.2-mac.jar

    在Linux启动安装程序,终端输入:
    $ sudo java -jar dcevm-0.2-linux.jar

    安装程序会替换掉java下 bin/client/jvm.dll 和 bin/server/jvm.dll ,并将以后的jvm.dll备份到相应目录下。还会将dcevm.jar 加到lib/ext/ 目录.

 

图一:hotswap补丁安装界面。

    执行上述命令后,就会出现图一界面,选择将要安装该补丁的java目录,单击安装就可以了。

    Ps:如果你的Linux没有图形界面,您可以从这里下载已经打好补丁的java。

    使用hotswap调试java程序

  1. 首先用修改后的java以debug模式启动 java程序。
  2. 使用eclipse连接到该java进程(也可以直接在eclipse中以debug方式启动)
  3. 现在在eclipse 工程下面针对class文件的任何修改将会直接反映到java程序中去。

    hotswap在淘宝

    令我们高兴的是,淘宝开发人员对该技术有着强烈的兴趣,目前已有如下团队使用的该补丁:Mytaobao开发团队,TDDL(Rtools)开发团队,HSF开发团队,交易中心等团队。

    我们期待你的加入。

    Ps:如果你使用HSF_JETTY插件,你只要通过升级就hsf_jetty,不用手动安装,就可以使用该patch。我们并会在接下来实现spring,webx配置文件的不重启动态替换。尽情期待。

转载请标明出处:i flym
本文地址:https://www.iflym.com/index.php/code/increase-jpda-to-java-programe-debug-develop.html

相关文章:

作者: flym

I am flym,the master of the site:)

《增强jpda以进行java程序的调试开发(转自taobao开发博客)》有一个想法

发表评论

邮箱地址不会被公开。 必填项已用*标注