远程调试 Bluemix CF Java 构建包应用程序



我在IBM Bluemix上部署了一个独立的Java应用程序,作为Cloud Foundry Java buildpack。

有没有办法在 Eclipse 中对它执行远程调试?我只能找到用于远程调试Java Liberty构建包应用程序的文档。

另一个答案中提到的套接字侦听方式当然很方便,但希望您有一个公共 IP 分配给调试机器(或者您必须在路由器上配置一些端口转发)。这可能并不总是可能的。

因此,另一种方法是在 Java 应用程序上启用调试,并使用 ssh 端口转发连接到应用程序实例。以下是步骤

  1. 通过设置具有值{enabled: true}的环境变量JBP_CONFIG_DEBUG并重新启动应用程序来启用 Java 调试。
  2. 通过 JDWP 为调试框架设置 SSH 隧道

    cf ssh -N -T -L 8000:localhost:8000 <APP_NAME>

  3. 打开 ssh 隧道后,您可以使用 eclipse on 的套接字附加调试类型localhost:8000

cf ssh前的先决条件:cf apicf logincf target

Java buildpack 文档中有一些说明,请访问 https://docs.cloudfoundry.org/buildpacks/java/java-tips.html#debugging

  1. 在 Eclipse 中打开您的项目。
  2. 右键单击项目,转到"调试方式",然后选择"调试配置"。
  3. 创建新的远程 Java 应用程序。
  4. 确保已选择
  5. 项目,从"连接类型"下拉列表中选择"标准(套接字侦听)"并设置端口。如果正在运行防火墙,请确保此端口已打开。
  6. 单击"调试"。

调试器现在应该正在运行。如果切换到"调试"透视图,应会看到"调试"面板中列出了您的应用程序,并且应显示Waiting for vm to connect at port

接下来,将您的应用程序推送到 Cloud Foundry,并指示 Cloud Foundry 使用以下说明连接到本地计算机上运行的调试器:

  1. 编辑清单 .yml 文件。将实例计数设置为 1。如果将此值设置为大于 1,则多个应用程序会尝试连接到调试器。
  2. 同样在 manifest.yml 中,添加 env 部分并创建一个名为 JAVA_OPTS 的变量。
  3. 将远程调试器配置添加到JAVA_OPTS变量:-agentlib:jdwp=transport=dt_socket,address=YOUR-IP-ADDRESS:YOUR-PORT
  4. 保存清单 .yml 文件。
  5. 运行 cf push。

完成后,您应该看到应用程序已启动,现在已连接到 IDE 中运行的调试器。现在可以添加断点并询问应用程序,就像在本地运行时一样。

最新更新