如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试?

发布时间:2018-12-28 11:01 来源:互联网 当前栏目:远程桌面

  在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法。在本文中,就让我们一起来看看,如何利用IntelliJIDEA进行远程Tomcat的调试。
  首先,配置remote:
  如上图所示,点击EditConfigurations,进入如下界面:
  如上图所示,我们进入了Run/DebugConfigurations界面,然后点击左上角的+,选择Remote:
  •标注1:运行远程JVM的命令行参数;
  •标注2:传输方式,默认为Socket;
  •标注3:调试模式,默认为Attach;
  •标注4:服务器IP地址,默认为localhost,需要修改为目标服务器的真实IP地址;
  •标注5:服务器端口号,默认为5005,需要修改为目标服务器的真实端口号;
  •标注6:搜索资源是使用的环境变量,默认为<wholeproject>,即整个项目。
  如上图所示,其中标注2和标注3又分别有两种分类,对于标注2,
  标注2:传输方式,默认为Socket;
  •Socket:macOS及Linux系统使用此种传输方式;
  •Sharedmemory:Windows系统使用此种传输方式。
  对于标注3,
  标注3:调试模式,默认为Attach;
  •Attach:此种模式下,调试服务端(被调试远程运行的机器)启动一个端口等待我们(调试客户端)去连接;
  •Listen:此种模式下,是我们(调试客户端)去监听一个端口,当调试服务端准备好了,就会进行连接。
  然后,复制标注1,即IntelliJIDEA自动生产的命令行参数,然后导入到Tomcat的配置文件中。以Linux系统为例,导入语句为:
  复制代码代码如下:
  exportJAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
  如果是Windows系统,则导入语句为:
  复制代码代码如下:
  setJAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
  两者的区别在于导入语句的关键字不同以及有无引号,Linux系统的导入关键字为export,Windows为set;Linux的导入值需要用单引号''括起来,而Windows则不用。
  接下来,修改Tomcat的bin目录下的catalina.sh文件(如果是Windows系统则修改catalina.bat文件),将上述的导入语句添加到此文件中即可:
  至此,IntelliJIDEA远程调试Tomcat的配置已经完成了,调试的后续步骤按正常的调试技巧进行就可以啦!
  +++++题外话:我是一个大彩蛋+++++
  在这里,我们假设服务器的IP地址为10.11.12.39,端口号为16203,设置完成后,进入Debug模式,如果连接成功,则会出现如下提示:
  此外,如果我们是跨多个系统进行调试,则只需要在想要调试的系统中配置Remote,打上断点,启动Debug模式,然后在服务开始的地方执行程序即可进入到我们设置的断点。而且,如果我们在本地配置Remote并关联到某个Tomcat,在Debug模式下,所有涉及到断点所在代码的功能,都会进入我们设置的断点。
  例如,对于服务器上的TomcatA,多个系统都用到了这个Tomcat,如订单子系统、账户子系统、路由子系统等,并且多个系统间互相调用,如订单子系统调了账户子系统,账户子系统又调了路由子系统,则当我们在这三个子系统中配置Remote并在对应的代码(如在订单子系统中查询商户的账户信息,则调到账户子系统;在账户子系统中又通过路由子系统调到其他底层服务查询商户的账户余额等)上打上断点,启动Debug模式之后,通过单元测试或者页面操作触发订单子系统中的查询商户的账户信息功能,则会依次进入到在上述三个子系统中设置的断点。
  此外,在我们配置完远程调试之后,就算别人启动相关服务,也会进入到我们的断点,而且会受到我们设置的断点的影响,只有在我们执行完测试之后,服务才会继续执行下去。最后,远程调试的功能真的很强大,善用远程调试,远离Bug!
  以上就是本文的全部内容,希望对大家的学习有所帮助。
 
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、