首页 > 解决方案 > 调试多进程java应用程序

问题描述

在不清楚应该调试哪个进程的情况下,调试多进程 Java 应用程序的好系统是什么?

例如,在 Python 中,我可以使用rpdb并添加行import rpdb; rpdb.set_trace()以便执行阻塞,直到我使用 eg 连接到调试器nc 127.0.0.1 4444

与上述快速可靠的方法相比,当我使用 Java 调试器时,我看到了以下挑战:

  1. 确保每个进程都使用适当的参数运行以允许调试——在我的情况下,不清楚是什么启动了所有进程,因此在哪里更改参数并不明显。有没有办法将我的计算机上的默认设置更改为始终包含 jvm 选项-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044

  2. 在命中所需代码之前决定将调试器连接到哪个进程 - 再次,不清楚我应该连接到哪个进程,并且rpdb在调试器连接之前阻塞很方便,您不需要识别进程ID。Java中有类似的东西吗?

标签: javadebugging

解决方案


用类似的东西启动java:

java -agentlib:transport=dt_socket,server=y,suspend=y,address=1044

suspend=y位告诉 VM 在运行 main() 之前等待调试器连接。address是要连接的端口。


推荐阅读