第 4 章 调试基于 Eclipse Vert.x 的应用
这部分包含有关在本地和远程部署中调试基于 Eclipse Vert.x 的应用的信息。
4.1. 远程调试
要远程调试应用,您必须首先将其配置为在调试模式中启动,然后为它附加一个调试器。
4.1.1. 以调试模式在本地启动应用程序
调试基于 Maven 的项目的方法之一是在指定调试端口的同时手动启动应用,然后将远程调试器连接到该端口。此方法至少适用于以下应用程序部署:
-
使用
mvn vertx:debug
目标启动应用程序时。这将启动启用调试的应用程序。
前提条件
- 基于 Maven 的应用程序
流程
- 在控制台中,导航到您的应用程序的目录。
启动应用程序并使用
-Ddebug.port
参数指定 debug 端口:$ mvn vertx:debug -Ddebug.port=$PORT_NUMBER
这里的
$PORT_NUMBER
是您选择的未使用端口号。记住此号码用于远程调试器配置。使用
-Ddebug.suspend=true
参数使应用程序等待等待调试器启动。
4.1.2. 在 OpenShift 中启动应用程序处于调试模式
要在 OpenShift 上远程调试基于 Eclipse Vert.x 的应用,您必须将容器内的 JAVA_DEBUG
环境变量设置为 true
,并配置端口转发,以便您可以从远程调试程序连接到您的应用。
前提条件
- 在 OpenShift 上运行的应用。
-
已安装
oc
二进制文件。 -
在目标 OpenShift 环境中执行
oc port-forward
命令的功能。
流程
使用
oc
命令,列出可用的部署配置:$ oc get dc
将应用的部署配置中的
JAVA_DEBUG
环境变量设置为true
,它将 JVM 配置为打开端口号5005
以进行调试。例如:$ oc set env dc/MY_APP_NAME JAVA_DEBUG=true
如果应用程序没有设置为在配置更改时自动重新部署,请重新部署应用程序。例如:
$ oc rollout latest dc/MY_APP_NAME
配置本地机器到应用程序 pod 的端口转发:
列出当前运行的 pod,并找到包含您的应用程序的 pod:
$ oc get pod NAME READY STATUS RESTARTS AGE MY_APP_NAME-3-1xrsp 0/1 Running 0 6s ...
配置端口转发:
$ oc port-forward MY_APP_NAME-3-1xrsp $LOCAL_PORT_NUMBER:5005
在这里,
$LOCAL_PORT_NUMBER
是本地机器上您选择的未使用端口号。记住此号码用于远程调试器配置。
完成调试后,取消设置应用程序 pod 中的
JAVA_DEBUG
环境变量。例如:$ oc set env dc/MY_APP_NAME JAVA_DEBUG-
其他资源
如果要从默认值更改 debug 端口,则可设置 JAVA_DEBUG_PORT
环境变量,即 5005
。
4.1.3. 将远程调试器附加到应用程序
当应用程序被配置为调试时,为它附加您选择的远程调试程序。在本指南中,涵盖了 Red Hat CodeReady Studio,但在使用其他程序时的步骤类似。
前提条件
- 在本地或 OpenShift 上运行的应用,并配置了调试。
- 应用程序侦听调试的端口号。
- Red Hat CodeReady Studio installed on your machine.您可以从 Red Hat CodeReady Studio 下载页面 下载。
流程
- 启动 Red Hat CodeReady Studio。
为应用程序创建新调试配置:
- 点 Run→Debug Configuration。
- 在配置列表中,双击 Remote Java 应用。这会创建一个新的远程调试配置。
- 在 Name 字段中输入适合配置的名称。
- 在 Project 字段中输入应用程序目录的路径。为方便起见,您可以使用 Browse… 按钮。
- 将 Connection Type 字段设置为 Standard (Socket Attach) (如果尚未连接)。
- 将 Port 字段设置为应用程序侦听调试的端口号。
- 点 应用。
点 Debug Configuration 窗口中的 Debug 按钮开始调试。
要在首次时间后快速启动您的调试配置,请点击 Run→Debug History,并从列表中选择配置。
其他资源
在红帽知识库中使用 JBoss Developer Studio 调试 OpenShift Java 应用。
Red Hat CodeReady Studio 之前称为 JBoss Developer Studio。
- OpenShift 博客中的 调试 Java 应用 OpenShift 和 Kubernetes 文章.