2015-04-12 117 views
0

我想了解远程调试的工作原理。我需要将我的应用程序部署在Tomcat上才能正常工作吗?更具体地说,假设我的机器上有源代码,IntelliJ上的客户端调试器,将代码指令传输到远程机器上的服务器调试器,或者代码已经部署在该机器上。Tomcat和Intellij远程调试

从我在JDA上看到的所有示例中,应用程序必须以远程计算机上的必需选项启动,以便客户端调试器(前端)可以连接到该计算机上的调试器后端。

但我不清楚如何使它与容器一样使用tomact。从我读过的例子来看,这种情况下的应用程序似乎只能是tomcat,并且源代码的指令会通过线路传输。事实上,我没有看到任何步骤来部署应用程序。

请有人解释一下。

回答

1

当您调试在tomcat容器内部署的应用程序时,您需要必须远程部署您的应用程序。远程调试调试远程应用程序(驻留在tomcat容器内)。在intellij中看到的源代码在调试期间不会传输到服务器。

您可以尝试一些小实验:在源代码中添加一些行并在其上放置断点,然后启动远程调试会话而不用重新部署。由于源代码和已部署代码之间的同步不同步,您会发现新代码行上的断点被intellij标记为红色“x” - 这是因为调试器无法找到这些行(按行号)在服务器上。

即使当您在intellij中的源代码与在远程服务器上的代码不同时,调试实际上也可以工作并停在断点上,只要断点位于两个名称相同的类中。但是,实际运行的代码是服务器上的代码。

作为一个附注,您可以在调试会话期间更改intellij中的代码,并立即在服务器中生效(直到调试会话结束)。为此,在调试会话正在等待断点时,编译已更改的类(intllij中的Ctrl + F9)。这调用了HotSwap mecahnism

1

Tomcat的远程调试是通过以下方式启动Tomcat一样简单:

/some/path$ catalina.sh jpda start 

这将启动Tomcat默认端口上启用远程调试,8000很多其他的事情,包括如何改变这个端口,在FAQ中解释。