使用云主机CodeArts IDE进行远程JVM服务调试

1 概述

1.1 背景介绍

在我们线上遇到问题的时候,可能要在出现问题的地方增加日志,重新进行编译打包部署,然后再对问题部分输出的日志进行问题分析,如果日志有遗漏,还需要重复这个流程。本案例为大家带来一个新的解决方式,通过CodeArts IDE的远程调试功能,使用调试器监听传入连接来进行远程JVM服务的DEBUG调试。

1.2 适用对象

  • 企业
  • 个人开发者
  • 高校学生

1.3 案例时间

本案例总时长预计60分钟。

1.4 案例流程

3b72b3b9cf900a343620f90bd240dad5.png{{{width="50%" height="auto"}}}

说明:

① 登录云主机,拉取代码,启动CodeArts IDE 终端Terminal; ② 启动鲲鹏云服务器,部署服务至鲲鹏云服务器; ③ 配置CodeArts IDE远程连接鲲鹏云主机,使用CodeArts IDE调试鲲鹏云主机上部署的服务。

1.5 资源总览

本案例预计花费总计0元。

资源名称规格单价(元)时长(分钟)
开发者空间-云主机免费版(操作系统:Ubuntu,CPU架构:X86,工具: Java工具集(CodeArts IDE +OpenJDK +Git))060

2 操作步骤

2.1 拉取代码到CodeArts IDE

进入云主机后,点击下方菜单的“Terminal Emulator”按钮,打开命令行工具。

a526e526c53cb89d1425c580c22e9aa7.png

b575b8619b8cdc66d87cae6ecc228155.png

在命令行中输入命令“cd \~”跳转到用户家目录下。

4fc5dba2d71453f512bb0804ed3a1171.png

在命令行中输入下面git命令拉取代码。

git clone https://gitcode.com/CaseDeveloper/E-SpringBootWebDemo-Java.git

0126.png

使用CodeArts IDE打开下载代码的文件夹。

834ef84e4e54c5566d33fece1b7e5887.png

adcf903512df0b41bf22f85c49d6a4c2.png

等待CodeArts IDE右下角工程模型自动同步成功。

a7be3b1a170fda3d83c09adf823a8c5a.png

点击“终端”,开启CodeArts IDE终端。

f1ba995532fe6c2e68a9db35207bb531.png

2.2 部署服务至鲲鹏云主机

  1. 在终端输入自动部署命令,命令如下:

``` language hcd deploy --password abcd1234@ --time 3600


命令的参数说明:

-   password:password关键字后设置的是鲲鹏服务器的root用户密码,命令中给出的默认为abcd1234@,开发者可以替换成自定义密码(至少8个字符)。
-   time:time关键字后面设置的为鲲鹏服务器的可用时间,单位为秒,至少600秒。当前实验预估需要40分钟,为了保证时间充足,在命令中申请的时间为60分钟,即3600秒。

    ![961fc438d60af8bf1104cb7570de119b.png](https://fileserver.developer.huaweicloud.com/FileServer/getFile/spaceguides/000/fe8/1fa/09329602ec000fe81faac006ed7069fa.20250126064755.44619038602786513132686583418559:50560208012111:2421:EC6BF273B131E494CAFB0AAD181F7E65143BAAA0278FB1AFFE7628EEEB41EE9B.png?customIdMd=37a39f1c3a1a4a2d98c7dd34a4b4df16)

2.  记录下自动部署后生成的弹性公网IP地址。

    ![c0258b7f43abf61e5e0d6d67591ebea0.png](https://fileserver.developer.huaweicloud.com/FileServer/getFile/spaceguides/000/fe8/1fa/09329602ec000fe81faac006ed7069fa.20250126064759.87407385366379717414636514129363:50560208012111:2421:6C04AD72503EDEB02D9686CBC4BC6FFE6B06106BFD408DDC03622DB061430B20.png?customIdMd=9de881f8ee754db6930a33a1040ecfe0)

3.  点击Maven下的package 编译打包当前项目。

    ![2e8d5aed65e828c5e516e5f1f95a55c6.png](https://fileserver.developer.huaweicloud.com/FileServer/getFile/spaceguides/000/fe8/1fa/09329602ec000fe81faac006ed7069fa.20250126064805.50615046323239637253819018009851:50560208012111:2421:A174E8C10D40DB139F378710E99AB3ADBE3B79040EE3CE6F309A1B0B02ADF5DE.png?customIdMd=1697b5af9cbd471e9e8342466ac589b9)

4.  将当前包传输至鲲鹏云远程云主机上。在终端输入传输命令,命令如下:

    IP为第2步记录的弹性 IP。
 ``` language
scp target/E-SpringBootWebDemo-Java.jar root@IP:\~

这个命令的作用是将第3步构建的位于当前目录target 目录下的E-SpringBootWebDemo-Java.jar包传输至鲲鹏云远程云主机上的/root目录下。

遇到类似下图需要确认的情况输入yes确认。

652bd6c1d299d82648c280fb90855ac7.png

输入密码请输入第一步申请时设置的密码,默认为abcd1234@

405ab96e3da6a37db97aa3f236621d96.png

  1. 远程登录鲲鹏云主机

    IP为第2步记录的弹性 IP。 ``` language ssh root@IP


输入密码请输入第一步申请时设置的密码,默认为abcd1234@。
![fa3e522873a0f74cd4fab9010c00e4ce.png](https://fileserver.developer.huaweicloud.com/FileServer/getFile/spaceguides/000/fe8/1fa/09329602ec000fe81faac006ed7069fa.20250126064822.48629144075492290498759621202186:50560208012111:2421:303EEB9D547347A063E8D9B2307BCFAEF64B57C62F322D8D304FEDEBC1707F55.png?customIdMd=6e7f6dccc3454a25a3e1e8df985a8283)

![38c3290feffab18be64f3e83fbe3950b.png](https://fileserver.developer.huaweicloud.com/FileServer/getFile/spaceguides/000/fe8/1fa/09329602ec000fe81faac006ed7069fa.20250126064826.49929888663229811970300023649605:50560208012111:2421:3D1E052BEF63E58B0996657F36DD9EE062C905AA2AF682C04B474DC03938B79E.png?customIdMd=4d0c71e5ee6f42d78a181e9c2f585b3f)

6.  执行命令部署服务,执行下面命令部署服务。

``` language
nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5210 -Dserver.port=8201 -jar E-SpringBootWebDemo-Java.jar &

参数说明:

  • nohup : 后台运行SpringBoot进程
  • -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5210 :SpringBoot服务端添加远程通道这里我们使用5210端口作为服务端开放的端口。后面我们要使用这个端口作为CodeArts IDE调试端口。
  • -Dserver.port : SpringBoot 默认启动端口为8080,这里配置为8201避免和鲲鹏云上端口冲突。

ff10e9eff2c86800ec5effeb3bbc8b6b.png

输入下面命令持续查看部署日志:

tail -f nohup.out

93931fec3554190bb1a055bfcae8d030.png

2.3 配置CodeArts IDE远程连接鲲鹏云主机

点击“编辑配置”。

361f61a94bd4b55e4dd1926ac8bc6e8b.png

添加Remote Debug(Attach to remote JVM),HOST为2.2第二步记录的弹性 IP,PORT为上一步address=5210填写的5210端口。

d691221838ad4bbda4e86b704f51ca68.png

a271dddd248dbdeee05e94ffc350fb7a.png

点击启动,CodeArts IDE下方出现橘黄色标识即为成功。

269579c0a97965b7d1986e420556d0f7.png

2.4 用CodeArts IDE调试鲲鹏云主机上部署的服务

将鼠标挪动到对应代码行的编码前方,会浮现红色断点,单击红色断点,在代码中打断点。

cf620bdb27eef903cacde4584d83b22e.png

fd67bb03e287546e5c7608dca6b2991e.png

打开浏览器输入:http://IP:8201/helloword/ceshi。其中IP替换成自己的服务器IP地址。

e59183feda58813368562d79f78bc52e.png

进入CodeArts IDE查看,已经进入调试模式,可以将鼠标放置到变量上查看,前端浏览器访问参数,可以通过右上快捷调试进行调试。

36aeb37cbc68211b25f479d7463aee5d.png 0126-2.png

至此,本案例内容全部完成。

注: 调试必须保证本地和线上运行的SpringBoot代码一致才能成功。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值