3

我有一个 Python 代码,我使用 IntelliJ 运行它。Python 代码将执行一个java命令,该命令最终会生成一个 JVM。Python 和 JVM 使用 Py4J 和自定义套接字进行通信。如何使用 IntelliJ 连接到 JVM 以进行调试?

4

2 回答 2

2

我假设您的 Python 代码使用call生成java命令。os.system如果您想从您的 IDE 中调试它,那么您应该在生成的 JVM 上打开调试(请参阅主题以获取启用 JVM 调试的可能选项):

    os.system("java -jar your.jar -Xdebug -Xrunjdwp:server=y, transport=dt_socket,address=4000, suspend=y");

在上面的代码中,生成的 JVM 将在端口4000上侦听传入的调试器连接。现在,您可以使用InteliJ 远程调试配置功能使用提供的端口连接到生成的 JVM。注意suspend=y参数 - 这意味着 JVM 将作为挂起启动,直到连接调试器。这将防止您错过想要调试的有趣 JVM 执行部分的情况,或者防止 JVM 在主线程完成后退出的情况,而您甚至可以开始您的 InteliJ 远程调试会话。

于 2015-08-13T11:22:50.537 回答
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
于 2015-08-13T11:07:55.687 回答