`

JAVA的远程调试方法汇总

    博客分类:
  • java
阅读更多

原文地址:http://www.blogjava.net/yongbing/articles/221179.html

 

 

首先,JAVA自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的

调试环境,并支持设置断点,支持线程线级的调试。

JAVA的调试方法如下:
1。首先支持JVM,并设置参数,使之工作在DEBUG模式下,加入参数:-Xdebug -Xrunjdwp,transport=dt_socket,server=y,address=5432,suspend=n,onthrow=java.io.IOException,launch=/sbin/echo
其中,-Xdebug是通知JVM工作在DEBUG模式下,-Xrunjdwp是通知JVM使用(java debug wire protocol)来运行调试环境。该参数同时了一系列的调试选项:
transport指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台。
server参数是指是否支持在server模式的VM中.
onthrow指明,当产生该类型的Exception时,JVM就会中断下来,进行调式。该参数可选。
launch指明,当JVM被中断下来时,执行的可执行程序。该参数可选
suspend指明,是否在调试客户端建立起来后,再执行JVM。
onuncaught(=y或n)指明出现uncaught exception 后,是否中断JVM的执行.

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



其实就是使用了JDK的JPDA,在启动服务器(Jboss或者Tomcat等)的命令行参数里面加上:
-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

Java远程调试

-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 。

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

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

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端口

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前面

http://dn.codegear.com/cn/article/33654
http://www.eclipsezone.com/eclipse/forums/t53459.html
http://articles.techrepublic.com.com/5100-10878_11-6139512.html
http://www.lifevv.com/tenyo/doc/20070918003423784.html

 

Websphere

1. Configure Websphere application server.

    In administraction console, click Servers->Application servers->server name->Debug service(Right down corner). Check "Enable service at server startup", remain default values for others.

   After this, you need to restart application server. To test if the debug service is started, you can use netstat -a to see if the port you set is now being listened.

2. Configure Eclipse

    Click Run->Debug..->Remote Java Application(in the left tree), then click new. Change the Host, Port to what you have configured in the Websphere application server.

   Don't worry about the current class(used as the debug name), there is no main class actually.

   After configuration, run this debug. This will create a connection with the remote debug service.(You can see it using netstat -a in the remote server)

3. Debug

   Set breakpoint in Eclipse.

   Run your application in the application server and running will pause when break point reached.

Reference:

Websphere administration console help

http://www-128.ibm.com/developerworks/cn/linux/opensource/os-ecbug/

 

分享到:
评论
1 楼 cnlinkin 2011-06-27  

相关推荐

    常用中间件开启远程调试方法汇总

    在Eclipse中,选择“Run” -> “Debug Configurations…”,然后在“Remote Java Application”部分新建一个配置,填写服务器IP和刚才设置的调试端口,点击Debug按钮,就可以如同调试本地代码一样进行远程调试了。...

    Java工程师应用技术汇总

    ### Java工程师应用技术汇总 #### 一、基础篇 ##### 1.1 JVM **1.1.1 Java内存模型** - **Java内存模型(JMM)**:JMM是Java虚拟机规范的一部分,用于定义程序执行过程中的内存一致性模型。它确保了线程之间的...

    Andorid JAVA IOS 全套汇总

    7. Android生命周期:理解各个Activity状态和生命周期方法是避免内存泄漏的关键。 8. 多线程:使用AsyncTask或Handler进行异步操作,提高用户体验。 9. 自定义View:根据需求定制自己的UI组件。 10. 通知和...

    《哪吒面经》Java经典面试题汇总.pdf

    ### 《哪吒面经》Java经典面试题汇总知识点概览 #### 一、Java基础知识 ##### 1. 跨平台性 - **定义**:跨平台性是指编写的Java程序能够在不同的操作系统(如Windows、Linux、MacOS等)上运行,而无需针对每个平台...

    JPDA文章汇总

    JPDA常用于远程调试、自动化测试、性能分析等场合,特别适合分布式系统或云环境中的Java应用调试。 6. **源码分析:** 在“DemoCode”中,可能包含了利用JPDA进行调试的示例代码。通过分析这些代码,我们可以了解...

    java开发中常用的linux命令汇总

    Linux命令行提供了高效、强大的工具,可以帮助开发者进行项目管理、调试、系统监控等任务。以下是一些Java开发中常用的Linux命令,它们对于优化开发流程至关重要。 1. **ls**:列出目录内容。`ls -l` 可以查看详细...

    Java Programming 24-Hour Trainer

    ### Java编程24小时训练营知识点汇总 #### 一、引言 《Java编程24小时训练营》是一本非常适合Java初学者的教材。本书通过精心设计的课程安排,帮助读者在有限的时间内掌握Java编程的基础知识及进阶技能。本书不仅...

    Java水晶报表 Java水晶报表.ppt

    Java水晶报表,全称为Crystal Reports for Java,是一种用于创建、设计和展示复杂报表的软件工具。该工具由Business Objects公司(现为SAP的一部分)开发,特别适合与Java应用程序集成,提供丰富的报告功能,帮助...

    RubyAndJDWP

    - **Java Debug Interface (JDI)**:提供了一个高级编程接口,用于远程调试,自Java 1.4版本起全面支持高速调试。 ### 实现决策 在决定实施路径时,Rich和Chad分别承担了不同的任务: - **Rich负责JDWP的实现**:...

    java常用网址,可能已经过期了

    11. **CSDN 活动 - Java 学习资源汇总** - [http://events.csdn.net/ymy/imooc.com1/index.html](http://events.csdn.net/ymy/imooc.com1/index.html) - **知识点**:收集了一些Java在线课程和学习资源。 12. **...

    基于SpringBoot在线远程考试系统源码数据库.zip

    总结,这个基于SpringBoot的在线远程考试系统利用Java技术和SSM框架,构建了一个高效稳定的考试平台。通过数据库设计和功能实现,系统不仅能满足基本的考试需求,还能确保数据的安全和系统的稳定运行。对于学习者来...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包成4部分,这是第3部分 注:本系列图书的第I、II卷再版时均相应改名为...

    全注解 SSH2 所有jar包 汇总

    SSH2(Secure Shell 2)是一种广泛用于网络服务的安全协议,...这个汇总包中的jar文件是经过调试和测试的,可以确保在各种场景下的稳定运行,对于需要在Java应用中实现SSH2功能的开发者来说,是一个非常有价值的资源。

    gwt学习笔记汇总

    文档“gwt.doc”可能涵盖了GWT的基本概念,如模块系统(Module System)、事件处理(Event Handling)、UI构建(UI Building)和远程服务调用(Remote Procedure Calls, RPC)。GWT模块系统允许开发者组织和管理应用...

    jbreakpoint:JBreakpoint 是 JVM 的控制台调试器,它使用伪图形界面

    这个项目的主要目标是在我们有高延迟网络连接时有机会远程调试 JVM。 当基于 GUI 的 IDE 调试器与远程服务器互操作时,它们会收到大量小数据包 - 当前 JVM 上下文。 此上下文包含堆栈帧、当前类的“this”变量、...

    MapReduce - WordCount案例 - 含各种部署方式源码

    本文将详细解析MapReduce在实现WordCount案例中的原理、步骤以及如何通过Java进行编程,并涵盖本地提交和远程调用的不同部署方式。 1. **MapReduce基本原理** MapReduce分为两个主要阶段:Map阶段和Reduce阶段。...

    Eclipse环境配置_汇总

    7. **运行配置**:Eclipse提供多种运行配置,如Java应用程序、JUnit测试、远程Java应用等。在“运行”菜单下创建和管理这些配置,可以指定主类、VM参数、工作目录等。 8. **调试配置**:Eclipse的调试工具强大且...

Global site tag (gtag.js) - Google Analytics