【发布时间】:2017-12-03 20:02:28
【问题描述】:
在运行弹性 beanstalk java 应用程序(不是 tomcat)时,如何启用远程调试?
AWS documentation 通过指定启动 java 进程的命令,展示了如何为应用程序实现它。
但如果我想单独部署 SAME 应用(例如 dev 和 prod 部署),并且只想为 dev 启用远程调试,如何实现?
【问题讨论】:
标签: java debugging jvm amazon-elastic-beanstalk
在运行弹性 beanstalk java 应用程序(不是 tomcat)时,如何启用远程调试?
AWS documentation 通过指定启动 java 进程的命令,展示了如何为应用程序实现它。
但如果我想单独部署 SAME 应用(例如 dev 和 prod 部署),并且只想为 dev 启用远程调试,如何实现?
【问题讨论】:
标签: java debugging jvm amazon-elastic-beanstalk
这可以通过使用_JAVA_OPTIONS 环境变量来实现,如here 所述。
环境变量的名称可能因JVM供应商而异,但目前elastic beanstalk使用的是OpenJDK,它尊重_JAVA_OPTIONS
[webapp@ip-XXXXXXX ~]$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
您只能在您希望启用调试的弹性 beanstalk 环境中设置此环境变量。例如
_JAVA_OPTIONS=-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5001,suspend=n
注意事项:
【讨论】:
我认为您可以为 Eclipse 使用 aws 工具插件 https://aws.amazon.com/eclipse/
勾选并保存将允许用户远程调试。
或在 AWS 控制台 > Elastic Beanstalk > 配置 > JVM 选项中更改
以上是JDK5之前的JDK
对于 JDK8:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787
【讨论】: