1 概述

1.1 背景介绍

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

1.2 适用对象

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

1.3 案例时间

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

1.4 案例流程

3b72b3b9cf900a343620f90bd240dad5.png

说明:

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

1.5 资源总览

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

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

体验完整案例请点这里👉️👉️👉️使用云主机CodeArts IDE进行远程JVM服务调试

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. 在终端输入自动部署命令,命令如下:
hcd deploy --password abcd1234@ --time 3600

命令的参数说明:

  • password:password关键字后设置的是鲲鹏服务器的root用户密码,命令中给出的默认为abcd1234@,开发者可以替换成自定义密码(至少8个字符)。

  • time:time关键字后面设置的为鲲鹏服务器的可用时间,单位为秒,至少600秒。当前实验预估需要40分钟,为了保证时间充足,在命令中申请的时间为60分钟,即3600秒。

    961fc438d60af8bf1104cb7570de119b.png

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

    c0258b7f43abf61e5e0d6d67591ebea0.png

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

    2e8d5aed65e828c5e516e5f1f95a55c6.png

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

    IP为第2步记录的弹性 IP。

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。

ssh root@IP

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

38c3290feffab18be64f3e83fbe3950b.png

  1. 执行命令部署服务,执行下面命令部署服务。
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代码一致才能成功。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐