在代码中启用 java 远程调试

Enable java remote debug in code

例如,我们可以通过在命令行中添加以下内容来启用java远程调试。

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

但是我的应用程序是运行 in yarn,我不确定哪个端口可用。

所以我想在我的代码中启用 java 调试。

首先我检测到一个可用的端口并登录我的程序,然后我可以使用这个端口来调试我的应用程序。

地址 属性 指定主机(可选)和端口(如果主机被遗漏,则仅指定端口)。因此 address=5005 在您的情况下指定端口 5005。如果您希望您的程序等到您连接调试器,请将 suspend=n 切换为 suspend=y

编辑: 也许我误解了你的问题。如果您想以编程方式启用调试,这是不可能的,因为调试工具 JPDA 没有公开 Java API 也没有任何其他方式以编程方式启动和停止它。

我不确定这是否可以通过代码完成;然而根据 an answer to this old question, it is possible to enable debugging for an already-running JVM using jsadebugd

如上述回答中所述,该功能标记为实验性且不受支持,因此您的情况可能会有所不同。