IntelliJ IDEA 之 远程调试篇
我的工作困扰
应用部署依赖太多外部环境,本地部署困难重重,问题追踪依赖于日志文件,烦人!某些功能本机正常运行,提交测试或者上线却表现欠佳,烦人!某些功能较为复杂,正常运行需要人为制造大量测试数据,烦人!
重拾小时候的幸福
多次遇到上述问题之后,开始变得惶恐和不安,难道就无法摆脱这种困境吗?难道JVM (Java Virtual Machine)无法通过网络传输完成远程调试吗?就在我将[远程调试]四个字填入搜索框之后,阳光甚好,我似乎找到了小时候吃冰棍般的满足与幸福。
题外话
[大力水手]牌子的冰棍是我最爱,就是太贵,记忆中只吃过两次。如果还有机会遇到它的话,指定一次买两根,吃一根,再吃一根。
主要内容
+ 演示环境
+ 创建 JavaWeb 项目,编写测试代码
+ 修改 Tomcat JVM 启动参数,开启远程调试
+ Idea 创建远程调试链接,启动调试
+ 附件和注意
演示环境,介绍本次远程调试所依赖的软件环境,即 IntelliJ IDEA / Apache Tomcat 版本
+ Apache Tomcat :7.0.55
+ IntelliJ IDEA :2018.2.1 (Ultimate Edition)
+ Windows 10 家庭中文版
创建 JavaWeb 项目,编写测试代码,创建 JavaWeb 项目,编写调试代码。此处将构建一个 Servlet 3.0 应用,并编写一个 Filter(过滤器),该过滤器的作用仅是用来设置程序断点。
修改 Tomcat JVM 启动参数,开启远程调试,编辑 Tomcat Catalina.bat 启动文件,添加 JVM 启动参数,设置远程调试服务模式和端口信息。
Idea 创建远程调试链接,启动调试,部署上面构建的 JavaWeb 项目 Deuger.war 至 Tomcat 服务器,并创建远程调试,设定远程机器 IP (本文调试的服务器在本地,所以 IP 地址为本地回环地址) 和调试端口(Catalina.bat 中设置的端口号)
远程调试操作,可以有效解决[ 我的工作困扰 ]中的前两项,因为在 Debug 模式下,问题会变得显而易见。而对于测试数据问题,可以通过 Debug 修改任何变量值,调整程序运行方向。
附件和注意
附件和注意,包括上述 Gif 图片中的配置信息和测试代码片段,若有任何未提及到的内容,请联系我。
附件:
Catalina.bat 设置:SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
注意:
不同平台下,配置稍有不同。例如 Linux 下应该修改 Catalina.sh 文件;WebLogic,WebSphere 服务器的配置也有少许不同,但是修改过程,配置参数几乎一致,若有需要,可自行查阅相关资料。当然也可以联系我,我们一起讨论。本文的介绍的内容偏向于实际操作,更多理论和细节内容没有介绍。若你有任何疑惑,当然也可以联系我,我们一起讨论。
微信公众号
文章内容大多数都是从我的公众号搬过来的,内容可能没有公众号更新的及时,下面是我的公号,欢迎来访。