Java远程调试-实战

参考:

http://blog.sina.com.cn/s/blog_617a491c0100fl9c.html

http://kaoshi.china.com/java/learning/777830-1.htm

1 JPDA

Sun的java平台调试架构(Java Platform Debugger Architecture),它能够对一个运行中的java应用程序进行全方位调试提供极大的帮助。

JPDA是一组接口与协议。JPDA主要由三个部分构成:

  • Java虚拟机工具接口(JVMTI)定义虚拟机(VM)在调试时必须提供的服务,包括调试信息(如栈信息)、调试行为(如客户端设置一个断点)和通知(如到达某个断点时通知客户端);
  • Java调试线协议(JDWP)定义在调试过程和调试器前端之间传输的信息和请求的格式;
  • Java调试接口(JDI)定义了调试者可以使用的调试接口,以方便与远程的调试服务进行交互。

    当虚拟机的调试服务运行时,虚拟机作为调试的服务提供端,监听一个连接,而调试器通过该连接与虚拟机进行交互。调试器都支持两种方式的连接:共享内存(被调试者和调试器位于同一系统)和 Socket连接(被调试者和调试器可位于任何地方,包括同一系统),如果使用socket链接,则在对应的JVM中以dt_socket为名确定自变量的类型。如果被调试者和调试器位于同一机器之中,且运行的是Windows系统,则可以使用名为dt_schmem的共享内存连接。

2 调试工具

最简单的调试工具就是上面提到的JDB,以上述调试用JVM为例,可以用下面的命运行启动JDB:
jdb -connect com.sun.jdi.SocketAttach:port=5432,hostname=192.168.11.213
另外,还有好多的可视化调试工具,如 eclipse,jsawt等等。Eclipses可用 ant debug来建立一个调试方法。

3 调试参数

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=3999,suspend=n

  • -XDebug 启用调试。
  • -Xnoagent 禁用默认sun.tools.debug调试器。
  • -Djava.compiler=NONE 禁止 JIT 编译器的加载。
  • -Xrunjdwp 加载JDWP的JPDA参考执行实例。
  • transport 用于在调试程序和 VM 使用的进程之间通讯。
  • dt_socket 套接字传输。
  • dt_shmem 共享内存传输,仅限于 Windows。
  • server=y/n VM 是否需要作为调试服务器执行。
  • address=3999 调试服务器的端口号,客户端用来连接服务器的端口号。
  • suspend=y/n 是否在调试客户端建立连接之后启动 VM 。

4 各种容器实战

4.1 Resin:

RESIN_HOME\bin\httpd.exe -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n

4.2 Tomcat:

catalina.sh/bat 的最上面加上:SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 即可。

4.3 Weblogic:

在startWebLogic.bat加上:set JAVA_OPTIONS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
启动App server后,在ide下通过debug remote java application并侦听相应的debug端口

4.4 Eclipse Rcp:

java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=8000 -cp F:/rcp/plugins/org.eclipse.equinox.launcher_1.0.0.v20070606.jar org.eclipse.equinox.launcher.Main -application rcp.application -data F:/rcp/workspace -os win32 -ws win32 -arch x86 -nl en_US
-Xdebug -Xnoagent等参数需要放在main class前面

 

ps:

对于renren-wap-wfs而言,调试参数写在 run 脚本内。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值