tomcat - 在 Tomcat 和 Intellij 上进行远程调试

标签 tomcat remote-debugging

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

从我在 JDA 上看到的所有示例来看,必须在远程机器上使用所需选项启动应用程序,这样客户端调试器(前端)才能连接到该机器上的调试器后端。

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

请有人解释一下。

最佳答案

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

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

调试实际上可以工作并在断点处停止,即使您在 intellij 中的源代码与远程服务器上的代码不同,只要断点位于两者上具有相同名称的类中。然而,实际运行的代码是服务器上的代码。

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

关于tomcat - 在 Tomcat 和 Intellij 上进行远程调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29595091/

相关文章:

java - 在需要连接到具有不同 URL 的数据库的 tomcat 中部署两个项目

javascript - 为什么即使在设置 "esponse.addHeader("Access-Control-Allow-Origin", "*");"在 servlet 中,CORS 请求也会失败?

java - 比 jdb 更好的 Java 远程调试器?

c - Windows CE 6远程调试。暂停程序时没有调用堆栈

debugging - 追踪歌剧《蜻蜓》

Tomcat 7 和 Axis 2 的 Java 套接字超时异常

git - Jenkins 中的 Bitbucket 不工作

java - 404 未找到 : Something wrong with access to a servlet deployed on Tomcat

java - 无法在 docker 容器中的 Java 9 Tomcat 9 上进行远程调试

debugging - Visual Studio附加到流程如何工作?