实现原理为:
本机和远程主机的两个VM之间使用Debug协议通过Socket协议通信,传递调试指令和调试信息,
其中,调试的程序常常被称为debugger,而被调试的程序称为debuggee
大致结构如上图,分为三个过程,用于调试的程序使用UI,通过protocol,调用远程JVM进程
1.添加Remote JVM Debug
2.填写远程ip
3.填写端口号
填写完成会自动生成Command line arguments for remote JVM-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6101
在启动jar包时后面添加刚才生成的参数-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6101
然后运行idea
如果启动成功,会在控制台显示,然后请求进入会进入断点
参数介绍
加载本机代理库,jdwp为Java Debug Wire Protocol的缩写,它定义了调试器(debugger)与被调试的JVM(debuggee)之间的通信协议
下面为参数的可配选项
如果出现下面错误Error running 'remote': Unable to open debugger port (xx.xx.xx.xx:6101): java.net.ConnectException "Connection refused (Connection refused)"
无非就是ip地址错误或者端口号错误,
检查ip地址是否有误,ip地址是否与idea填写配置一致,能否ping通;
端口号是否有误,端口号是否与idea填写配置一样,防火墙是否有该端口号,是否为该端口添加入站出站规则,端口是否已经被占用.