使用Intellij Idea进行远程调试

6

最近我了解了Idea下的远程调试过程。我的做法是将Idea中的远程调试配置复制到命令行Java执行参数中。实际的命令行参数如下:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

如果是脚本的话,我会在脚本中添加这些命令。这样做可以让命令行显示信息:
Listening for transport dt_socket at address: 8000

所以,可以使用本地源代码进行调试。然而,我不太理解远程调试是如何工作的。任何了解远程调试实际运作方式的人,请给我解释一下。

谢谢!


3
可能是Java 远程调试,它在技术上如何工作?的重复问题。 - mindas
3个回答

10

远程调试意味着您可以在本地或远程计算机上运行 Java 代码。当代码以调试模式运行时,您可以使用 TCP 网络连接从 IDE 连接到该代码并进行调试。IDE 需要拥有正在运行类的源代码,以便您可以在代码中设置断点并执行步进、检查变量等操作。

如果您对技术细节感兴趣,请参考JPDA文档


3
考虑这样一种情况:您想在应用程序中修复某些问题,但由于其他依赖项,您的应用程序只能在服务器上运行。这就是远程调试发挥作用的地方。您只需提供主机名和端口连接到服务器,并将其连接到您的相应环境。
它是如何工作的:
1. 将要调试的应用程序将附加一个套接字到自身,然后开始监听调试指令。 2. 调试器将绑定到该套接字,然后发送指令。

0

这是测试不同环境下代码的最佳方法。

在使用远程调试之前,我们需要确保以下几点:

  1. 我们的服务器上使用的是JBOSS。
  2. 配置 - JBOSS_HOME/bin/run.conf JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"

  3. 现在将服务器IP和端口号添加到IntelliJ远程调试中。 4.您应该拥有与服务器同步的本地项目的最新版本,否则将不允许调试。

  4. 您需要启动项目的IntelliJ服务器。
  5. 然后开始远程调试。
  6. 在本地放置一个调试点,当我们在服务器上开始测试时,它会停止并等待您处理它。

另一个要点是,它将在队列中保留所有请求,并且不允许任何人通过断点,这可能会阻止其他用户进行测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接