Intelij Idea远程调试Tomcat配置

       是否经常听到,“我本地是好的”,但是一到测试环境就发现不行,还有部分和第三方合作调试环境下只能连接测试环境的,这一切,貌似可以查看日志得以解决,但是,对于比较复杂的业务来说,日志已经满足不了需求,这个时候需要迫切debug来追踪下解决,基于此,才诞生了本文的目的,就是希望能够本地调试测试环境。那我们如何能做到呢?

       1、服务端Tomcat设置(以Linux环境为例)

首先打开Tomcat bin目录下的脚本文件--bin/catalina.sh, 可以使用vim catalina.sh 打开,首先定位输入 /JPDA_ADDRESS= 找到类似的变量,然后将值修改为5006(不能被占用的端口),如果开启了防火墙,要么关闭防火墙,要么开启防火墙但是端口开放。本人使用的是Tomcat 8,所以JPDA_ADDRESS默认值是localhost:8000,而Tomcat 7的默认值8000,为了和Intelij idea统一,可以将JPDA_ADDRESS设置为5006,前面的localhost也要去掉,切记~~~ 配置如下:

Intelij Idea远程调试Tomcat配置_第1张图片

      配置完毕后,将需要远程调试的war包扔进Tomcat中,然后启动Tomcat,在bin目录下,执行命令:./catalina.sh jpda start

可以启动tomcat并开启远程调试的端口。日志中若有 Listening for transport dt_socket at address: 5006打印,则说明服务端启动成功。

其实官方教程是在文件的开头加上  export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005' ,但是我不想让其他同事也是以debug模式启动。

       2、Intelij idea配置

在配置之前,我们先熟悉下配置面板属性介绍:

Intelij Idea远程调试Tomcat配置_第2张图片

点击Idea中的”run”按钮,在下拉菜单中点击“Edit Configurations…“,在弹出的菜单中点击“+“,再点击“Remote“,面板如上:

  • 标注 1:传输方式,默认为Socket;
  • 标注 2:调试模式,默认为Attach;
  • 标注 3:服务器 IP 地址,默认为localhost,需要修改为目标服务器的真实 IP 地址;
  • 标注 4:服务器端口号,默认为5005,需要修改为目标服务器的真实端口号,如5006;
  • 标注 5:运行远程 JVM 的命令行参数,Idea会默认生成参数,根据需要修改address的值,必须和服务端口一致,如5006;
  • 标注 6:搜索资源是使用的环境变量,默认为,即整个项目。   

标注 1:传输方式,默认为Socket; 
Socket:macOS 及 Linux 系统使用此种传输方式;
Shared memory: Windows 系统使用此种传输方式。

标注 2:调试模式,默认为Attach; 
Attach:此种模式下,调试服务端(被调试远程运行的机器)启动一个端口等待我们(调试客户端)去连接;
Listen: 此种模式下,是我们(调试客户端)去监听一个端口,当调试服务端准备好了,就会进行连接。

相应的配置操作完后,DEBUG模式启动此remote,如发现console端打印出  
Connected to the target VM, address: '10.200.XX.XX:5006', transport: 'socket'  说明idea端配置成功。

最后,只需要idea打开本地项目,然后在需要debug的地方,打下断点,然后在申请服务端的服务地址,如http://10.200.xx.xx/demo/ 即可断住请求。

       自身试验过,可以远程调试,若有问题,欢迎交流~

你可能感兴趣的:(优化处理,服务器,疑难杂症)