由Java应用远程调试(Remote Java Application Debugging)想到的

本文回顾了作者从依赖IBM Rational工具进行开发到意识到Eclipse远程调试功能的心路历程,并反思了学习过程中的不足之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        以前开发J2EE应用都是使用IBM Rational系列开发工具,尽管一直觉得IBM的开发工具用户友好性不够,而且经常要安装个2、3次才能搞掂,下载个补丁没准要若干G。可相对于纯Eclipse,它们还是有带来很多便利,比如可以很方便地调试JSP、Servlet、portlet、EJB 或者SCA Component。当然以Debug模式在开发工具中启动WAS或WPS那是相当的慢。

      用惯了IBM的开发工具,以至于我认为如果不针对不同的Server开发一些插件,Eclipse是不支持远程调试的,这种想法如此强烈,以至于我从来没有去google一下相关内容,更没有去看看Eclipse Help中Remote Debugging相关章节。

      近几个月一直在开发一个比较重要的项目,我的工作主要集中在前台,后台的引擎原本作为一个单机应用程序来运行,但最近将它作为一个MBean发布在Jboss上,如何调试? 我想当然地使用了最原始的手段:log+System.out,直到老大告诉我该如何调试为止。我立刻意识到在这个问题我有多么愚蠢,立刻google相关内容,发现早在2005年这个问题就已经很好的解决了。点击率颇高的文章来自如下链接:配置Eclipse进行远程调试,这是一篇译文,原文来自Configuring Eclipse for Remote DebuggingRemote Debugging with Eclipse 写的也不错。两篇文章的作者所使用的都是Eclipse3.0.0,说明Eclipse最晚在2004年就提供了Remote Debugging的功能,进一步搜索发现早在SUN发布JDK1.2时就已经将Java Platform Debugger Architecture (JPDA)包含其中,从那时起的IDE厂家就开始支持Remove Debugging。

       关于Remote debugging的技术问题我就不再多说,但总觉得如此重要的功能这么久都不知道有些说不过去,说明自己学习方法有问题。忽然我冒出个想法:是不是只有我忽略了这个重要功能?抑或其他人也犯了同样的错误?于是乎问了问周围的朋友,发现和我一样的还真不少。如此一来,问题变得有趣起来,可能每个人在这个问题上都有自己的原因,但肯定有一个共同的原因:很多人在学习过程中都犯一个通病——那就是不求甚解。我们可能在业界混了很多年,自认为对某些技术很精通,其实真要较真,我们掌握得还远远不够。如果我能认真看看JPDA相关介绍,或者仔细读读Eclipse  Help,或者深入领会Jboss启动参数的含义,那么我都应该在若干年前就掌握这个基本功能。

       作为农民工,我们自认为对工具袋中的锤子、扳手很了解,但实际情况却是我们对工具的掌握还很有限。我们可能想当然地认为只要我们对牛足够了解,我们就可以成为一个优秀的庖厨,殊不知,人刀合一才是成为一名顶级高手的首要条件。

### Intellij IDEA 中 Java 远程调试配置教程 要在 IntelliJ IDEA 中实现 Java远程调试功能,需要完成以下几个方面的配置: #### 1. 启动远程 JVM 并添加调试参数 为了使远程 JVM 支持调试模式,需在其启动命令中加入特定的 JVM 参数。这些参数用于指定调试协议、监听地址以及是否暂停等待调试器连接。 常用的调试参数格式如下: ```bash -javaagent:jdwp=transport=dt_socket,server=y,suspend=n,address=<port> ``` 其中 `<port>` 是调试端口,可以根据实际需求调整。例如,如果希望使用 `5005` 端口,则可以写成: ```bash java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 your-application.jar ``` 这一步骤确保了远程服务能够接受来自本地 IDE 的调试连接[^1]。 #### 2. 配置 Tomcat 或其他应用服务器(可选) 如果是基于 Tomcat 的项目,可以在其启动脚本中添加类似的调试选项。具体操作是在 Tomcat 的 `/bin/catalina.sh` 文件中修改环境变量 `JAVA_OPTS`,追加以下内容: ```bash JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8086,suspend=n,server=y" ``` 保存文件并重启 Tomcat 实例后,即可通过指定端口进行远程调试[^3]。 #### 3. 创建 Remote Debugging 配置项 在 IntelliJ IDEA 中创建一个新的 Run/Debug Configuration 来支持远程调试: - 打开菜单栏中的 **Run -> Edit Configurations...** - 点击左上角的 "+" 号,选择 **Remote** 类型。 - 填入对应的主机名(通常是 IP 地址或域名)和端口号(即前面定义的服务端口),例如: - Host: `localhost` 或者远程机器的实际地址 - Port: `5005` 或者自定义的端口号 - 如果有额外的安全设置或者防火墙规则,请确认允许该端口通信。 完成后点击 Apply 和 OK 完成配置[^4]。 #### 4. 设置断点并开始调试 回到代码编辑窗口,在目标函数的关键位置单击左侧空白区域设置断点。随后返回至刚才建立好的 Remote 调试配置界面,按下绿色三角形旁边的虫子图标启动调试过程。一旦触发条件满足,程序执行将会自动停止于设定处,此时可以通过右侧工具面板查看当前上下文中各变量的状态变化情况。 当一切就绪之后,只需发送 HTTP 请求或其他形式的消息给正在运行的目标应用程序实例,就能观察到预期的效果——IDE 内部展示出对应逻辑流程图样式的视图结构[^2]。 --- ### 示例代码片段演示 假设我们有一个简单的 Spring Boot 应用程序入口类 MainApplication.java 如下所示: ```java @SpringBootApplication public class MainApplication { public static void main(String[] args) throws InterruptedException { SpringApplication.run(MainApplication.class, args); System.out.println("Server started..."); Thread.sleep(10_000); // Simulate some work being done. } } ``` 按照上述指导步骤准备好之后,就可以轻松定位潜在问题所在之处啦! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值