有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java连接到JVM以进行Python脚本生成的调试

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


共 (2) 个答案

  1. # 1 楼答案

    执行java命令,该命令生成带有调试参数的JVM

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

    然后在IDE中创建一个新的远程连接。 事实上,当您开始创建一个新的主机和端口时,它已经为您提供了参数,例如:

    Command line arguments for running remote JVM:

    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
    
  2. # 2 楼答案

    我假设Python代码使用^{}调用生成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远程调试会话之前退出的情况