Idea remote debug

idea remote debug 有两种debugger mode, 分别是attach to remote jvm和listen to remote jvm, 两种模式对于jvm的启动参数也不一样。

远程debug参数说明

序号参数必须(y/n)可选值说明
1-Xdebugyjvm在调试模式下启动
2-Xnoagentn禁用默认sun.tools.debug调试器
3-Djava.compilernNONE因为是调试场景,故而不需要编译耗时比较久的JIT,此参数用来禁用JIT编译,只使用解释器转译
4-Xrunjdwpy使用jdwp进行通讯
5transportydt_socket
dt_shmem
dt_socket基于套接字传输,dt_shmem基于共享内存
6serverny/njvm是否以server模式运行
7addressy5005
*:5005
服务器暴露的端口号,客户端可通过此端口连接;jdk9及以上的版本需设置ip:port
8suspendny/n服务端jvm是否在客户端启动之后启动
9onthrown产生指定类型的异常时jvm会被中断并进行调试
10launchn当jvm被中断时执行的可执行程序

Attach to remote JVM

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=31000 -jar xx.jar

如果要等待debug客户端连接上才启动的话(调试启动时的场景),可以将suspend设置为y,如下:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=31000 -jar xx.jar

在idea 中创建一个Remote JVM Debug Configuration
在这里插入图片描述

Listen to remote JVM

当采用Listen to remote JVM模式时,只要将server=y这个参数去掉,其它不变即可。

java -agentlib:jdwp=transport=dt_socket,suspend=n,address=5005 -jar xx.jar

在idea 中创建一个Remote JVM Debug Configuration
在这里插入图片描述

docker container remote debugging

生成image时,Dockerfile内容如下:

FROM openjdk:11-jdk
ADD ./target/xxx.jar xxx.jar
CMD java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 xxx.jar

运行docker时需要添加-p参数

docker run -p 5005:5005 {imageId}

后面idea中运行remote debug就可以了。

kubernetes pod remote debugging

pod 端口映射

在pod运行起来后,将pod的端口映射出来,可以通过下面的命令实现:

kubectl port-forward {podName} 5005:5005 -n {namespace}
Service 端口映射

也可以在k8s中将service的端口以NodePort方式映射出来,例如:

apiVersion: v1
kind: Service
metadata:
  name: appservice
spec:
  type: NodePort
  selector:
    app: app
  ports:
  - name: debug-agent
    protocol: TCP 
    port: 5005
    nodePort: 30055
    targetPort: 5005

但是以这种方式进行调试,在pod还没有完全启动起来之前,映射出来的jdwp端口并不能访问。pod起来之后,就可以了。

参考

idea基于jdwp远程debug参数设置
Enable remote debugging Spring Boot apps on Kubernetes
Java Remote Debug for Applications Running in Kubernetes
Debug a Java application using a Dockerfile
debug-jvm-in-docker.md

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值