idea 远程调试

背景

在编写代码时, 总会遇到这样或者那样的bug. 这有些bug 特别是业务逻辑的bug .
在生产或测试环境好复现而在开发环境不好复现. 现在提供的一种思路, 就是远程调试:
我们可以在本地直接调试生产环境或者测试环境的代码. 只需我们本地代码和远程部署的代码一致.
远程主机就会通过socket 将程序执行情况同步到本地

操作

下面以idea 为例

  1. 设置远程启动配置
    在我们平时启动项目的坐边, 有一个 edit configuration的选项, 然后点击 + , 选择 Remote JVM Debug 选项
    Name 为之后启动的名称,
    Host 是远程服务器的 ip,
    port: 用于远程socket 连接的端口, 注意不要和项目端口一致, 否则可能会导致项目启动失败
    然后idea 会为我们自动生成一条命令行参数:
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10010

  2. 远程项目启动参数
    如果是使用的 java -jar xxx.jar 启动, 只需要在原来的启动方式加入第1步生成的参数即可. 例如

    ## 注意socket端口(address) 需要根据第一步自己设置的端口来配置java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10010  -jar xxx.jar
    
  3. 重新启动项目
    本地代码要和远程的代码保持一致, 否则有可能会导致调试失败
    在远程项目启动成功后, 在本地运行第一步的远程配置

注意事项

  1. 如果服务器配置了 iptables/防火墙 , 需要放开对应的端口
  2. 如果使用的是云服务器, 则也需要放开对应socket端口的安全组
  3. 如果使用开发工具的是eclipse , 远程调试见这位大佬的博客 传送门
  4. 如果使用docker 部署的jar, 则需要进行如下配置

docker 项目进行远程调试

本质和上面步骤差不多, 但是需要在docker 中, 添加一个内部端口和外部端口的映射
以便我们本地能够通过这个映射访问docker 项目部署的容器

步骤:

  1. 修改 DockerFile 文件
    在DockerFile 中的项目启动参数的位置添加idea 生成的参数
    (也可以复制下面参数, 只需修改为自己设置的socket 连接端口)
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10010

    部分DockerFile文件展示

    FROM java:8COPY xxx.jar xxx.jarEXPOSE 8081ENTRYPOINT ["java","-Duser.timezone=GMT+8","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10010","-jar","/xxx.jar"]
    
  2. 配置Docker 镜像启动参数
    利用 -p hostPort:containerPort 参数将 docker 容器内部 10010 端口映射到项目部署服务器的 10010 端口;
    xxx 为项目名

    docker run -d --restart=always --name xxx -p 8081:8081 -p 10010:10010 \
    -v /home:/home \
    -v /home/szhyyt-logs/xxx/:/logs \
    -v /home/xxx/upload:/upload \xxx:0.0.1  --spring.profiles.active=prod
  3. 启动docker 镜像, 本地运行 Remote Jvm Debug 配置


关于远程调试原理和配置参数解释. 如果还想了解更多请见 这里

IDEA 开启远程调试相关推荐

  1. tomcat开启远程调试功能

    在日常开发中,有时需要对远程服务器上的应用进行远程调试,对于tomcat,要进行远程调试其实很简单,只需要在启动tomcat时开启jpda服务即可. 什么是JPDA呢? JPDA(Java Platf ...

  2. idea java 远程调试_使用idea开启远程调试

    jar程序运行在远程服务器上出现错误,又没有明确的错误日志能够查看得到,无从下手?这篇文章获取可以帮助一二. 这里我来分享一种通过idea实现远程调试的方法,几个及其简单的操作就可以使我们定位远程服务 ...

  3. java如何开启远程调试服务端口_Java远程调试

    远程项目报错,但是通过日志等手段没法定位问题,只能提供远程调试的方式定位问题. 1. 步骤 1.1 启动调试端口 业务有自己的端口,而为了能够调试业务,需要另外开启一个端口用于调试. 在java虚拟机 ...

  4. java程序开启远程调试、断点功能

    代码就是最好的文档 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 几点说明: -agentlib:jdwp 这个 ...

  5. idea开启远程调试

    一.启动脚本配置 1.启动脚本添加 -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=5005 例如我在自己项目添加的案 ...

  6. 天猫魔盒android开发者模式,【当贝市场】天猫魔盒3 PRO开启远程调试模式教程

    原文链接>>> 3 PRO,因为使用的是YUNOS系统,比较少,可以通过系统设置打开远程调试模式,在PC端进行远程操作,诸如远程截图,推送安装APK文件,文件推送等.下面就是我使用的 ...

  7. java 远程调试spark_spark开启远程调试

    一.集群环境配置 #调试Master,在master节点的spark-env.sh中添加SPARK_MASTER_OPTS变量 export SPARK_MASTER_OPTS="-Xdeb ...

  8. linux下tomcat开启远程调试

    1.center下,在startup.sh文件首行中添加如下语句 declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.com ...

  9. Windows/Linux服务器上Tomcat开启远程调试,使用IDEA本地调试

    注意:要保证本地的代码与服务器上部署的代码完全一致

  10. tomcat9开启远程调试功能

    1)tomcat启动配置 修改bin/setenv.sh文件导入如下变量 export JPDA_ADDRESS=0.0.0.0:8000 启动tomcat命令,启动完成后可以使用netstat命令查 ...

最新文章

  1. 第11章 Internet 服务器应用课后习题答案
  2. 1084. Broken Keyboard (20)
  3. 属于程序员的黄金五年,把握这 5 年,或将迎来美好的职场生活!
  4. ETL的增量抽取机制
  5. 尝试修改smali码破解App
  6. windows server 2008R2下安装nginx
  7. SE:14.Annotation
  8. 使用 openssl 进行 base64 编解码
  9. 浊音、清音、爆破音音频分析
  10. C盘里的HTML是什么文件,C盘Windows下的winsxs是什么文件可以删除吗
  11. android10全面屏手势 操作图,丨系统设计丨ZUI 10加入更多全面屏手势
  12. react + canvas点线动画背景
  13. 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)
  14. java生成二维码扫描跳转到指定的路径URL
  15. 求首尾相连数组的最大子序列和
  16. Markdown内嵌图片的解决方法
  17. AI“文化宴”,易碎的市场寻求新的突破
  18. 手撸一个在线学习在线教育小程序
  19. 2022.12.30
  20. 非常详细的VS2013与PCL1.8.0配置方法

热门文章

  1. axios与ajax对比,AjAX 步骤和对比fetch和axios
  2. 高等数学(同济第七版上)课后习题及解答
  3. 小程序点餐系统,外卖点餐系统源码
  4. linux pdf放到一页,linux – 如何将多个PDF页面连接到单个页面
  5. 初级程序员软考重难点知识整理(持续更新)
  6. BMFont把美术图片(汉字,数字,字母)字生成艺术字体fnt格式
  7. tomcat日志配置——如何查看日志
  8. 快递公司type字典
  9. 将json数据转换成实体对象 JSON格式转换 JSON实体
  10. java有关物流管理的简历_Java开发实习生大学生简历模板