idea远程调试,包括docker容器启动项目

文章介绍了Java本地和远程调试的基本概念,强调断点设置在Java文件而实际运行的是class文件。调试过程中,IDE通过debug协议与JVM通信,实现断点控制。远程调试需要在JVM启动参数中配置-Xdebug和-Xrunjdwp选项,并进行端口映射。在IDE中配置远程JVM调试,确保代码同步,即可进行远程调试。对于docker环境,需注意配置宿主机的IP和映射后的端口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们先来了解一些基础知识:

代码调试的本质:

  1. Java本地debug时,断点是打在Java文件上的,代码执行到断点处,jvm就会停下了。所以很多人都认为debug时jvm运行的就是Java文件,这是不对的。我们知道Java是需要编译成字节码文件,运行再jvm上的是编译后的class文件,并不是Java文件。那么问题就出现了,为什么断点打在了Java文件中,虚拟机是怎么知道何时暂停呢?通信!对,就是通信。本地运行的服务和ide进行通信,来确定断点位置。
  2. 原理:两个VM之间通过debug协议进行通信,两者之间可以通过socket通信。既然通过socket通信,那么就能够实现远程调试。

远程调试是jvm附带的功能,通过配置参数来进行开关。

远程服务器jvm启动参数添加如下命令:

-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address={port}

port是对外暴露的debug端口。这个端口需要配置再idea中。

如果是docker容器启动服务的话,这条命令配置再dockerFile文件中。同时要做好端口的映射。

配置客户端,即idea工具。

  1. 保证本地代码和远程服务器上的代码完全一致。这样才能保证断点正确匹配。
  2. 点 + 号,选择Remote JVM Debug

  1. 填写信息,填写完信息后,点击OK按钮,即配置完成。如下图所示

如果是docker启动的话:远程服务器的域名或ip:指的是宿主机的,不是docker容器的。端口是做完映射后的端口。

  1. 配置完成后,就是启动了。首先选择配置好的,然后点击后面的debug。

  1. 启动完成。如下提示,就是启动成功。

  1. 启动成功后,就是再需要的代码位置增加断点即可调试了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h_and_g

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值