远程调试Bluemix CF Java buildpack应用程序

时间:2017-06-29 13:18:20

标签: ibm-cloud remote-debugging cloudfoundry ibm-cloud-plugin

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

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

2 个答案:

答案 0 :(得分:2)

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

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

  1. 通过设置值为JBP_CONFIG_DEBUG的环境变量{enabled: true}并重新启动应用程序来启用java调试。
  2. 通过JDWP

    为调试框架设置SSH隧道

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

  3. 打开ssh隧道后,使用localhost:8000上的eclipse中的Socket Attach调试类型

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

答案 1 :(得分:1)

https://docs.cloudfoundry.org/buildpacks/java/java-tips.html#debugging

的Java buildpack文档中有一些说明
  1. 在Eclipse中打开您的项目。
  2. 右键单击您的项目,转到Debug as并选择Debug Configurations。
  3. 创建一个新的远程Java应用程序。
  4. 确保选择了项目,从“连接类型”下拉列表中选择“标准(套接字侦听)”并设置端口。如果您正在运行防火墙,请确保此端口已打开。
  5. 单击“调试”。
  6. 调试器现在应该正在运行。如果切换到Debug透视图,您应该会在Debug面板中看到您的应用程序,它应该说Waiting for vm to connect at port

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

    1. 编辑您的manifest.yml文件。将实例计数设置为1.如果将此值设置为大于1,则多个应用程序会尝试连接到调试器。
    2. 同样在manifest.yml中,添加env部分并创建一个名为JAVA_OPTS的变量。
    3. 将远程调试器配置添加到JAVA_OPTS变量:-agentlib:jdwp=transport=dt_socket,address=YOUR-IP-ADDRESS:YOUR-PORT
    4. 保存manifest.yml文件。
    5. 运行cf push。
    6. 完成后,您应该看到您的应用程序已启动,现在已连接到IDE中运行的调试器。您现在可以像在本地运行时一样添加断点并查询应用程序。