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

标签 java python debugging jvm py4j

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

最佳答案

我假设您的 Python 代码使用 os.system 生成 java 命令称呼。如果你想从你的 IDE 调试它,那么你应该在生成的 JVM 上打开调试(参见 this 主题以了解启用 JVM 调试的可能选项):

    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 远程调试 session 。

关于java - 连接到 JVM 以进行由 Python 脚本生成的调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31986285/

相关文章:

java - JDK 6 中的陷阱

java - 为什么在 Java 中清除值时我们得到一个空映射?

java - 如何使Spring Web Flow中的 session 失效?

python - 通过 pdb 调试 djcelery 的 celeryd

java - Eclipse 调试器无法识别新的 Java 代码

java - 错误状态代码 407 不会在 Chrome 中显示

python - Django 登录所需的中间件不起作用

python3.5/pandas - 将多列转换为日期时间

Python:多维数组 ("matrix") 与列表中的列表一样吗?

django - 如何排除故障 - ImportError : Could not import settings 'mysite.settings' when deploying django?