我有一个Python代码,我使用IntelliJ运行。 Python代码将执行java
命令,最终将生成一个JVM。 Python和JVM使用Py4J和自定义套接字进行通信。如何使用IntelliJ连接到JVM以进行调试?
答案 0 :(得分:1)
执行java命令,该命令使用调试参数生成JVM。
即。 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
。
然后在IDE中创建一个新的远程连接。 事实上,当你创建一个新的,当你指定主机和端口时,它已经为你提供了参数,例如:
运行远程JVM的命令行参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
答案 1 :(得分:1)
我假设您的Python代码使用os.system
调用生成java
命令。如果要从IDE调试它,那么您应该在生成的JVM上打开调试(有关启用JVM调试的可能选项,请参阅this主题):
os.system("java -jar your.jar -Xdebug -Xrunjdwp:server=y, transport=dt_socket,address=4000, suspend=y");
在上面的代码中,生成的JVM将在端口4000
上侦听传入的调试器连接。现在,您可以使用InteliJ remote debug configuration功能使用提供的端口连接到生成的JVM。请注意 suspend=y
参数 - 这意味着在连接调试器之前,JVM将作为挂起启动。这样可以防止您错过了要调试的有趣的JVM执行部分,或者在主线程完成之后退出JVM,甚至可以启动InteliJ远程调试会话之前防止出现这种情况。