有两种模式,这里介绍的是我测试通过的一种方式(attach to remote JVM)
一、首先启动jar 指定一个监听端口 ,启动命令如下:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=端口号,server=y,suspend=y -jar jar包名称
例如:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -jar test.jar
出现此提示:Listening for transport dt_socket at address: 5005 说明操作成功,接下来开始打开IDEA 操作
二、打开idea
创建一个"Remote" 执行配置:
![](https://images2015.cnblogs.com/blog/380239/201704/380239-20170405134848003-2005115150.png)
![](https://images2015.cnblogs.com/blog/380239/201704/380239-20170405134857660-125607055.png)
如果是远程调试jar 这里就是远程 IP地址
![](https://img2018.cnblogs.com/blog/890191/201909/890191-20190905171048370-1455324054.png)
因为你的Jar文件已经在执行了, 所以可以直接开始 debug:
这样
![](https://img2018.cnblogs.com/blog/890191/201909/890191-20190905171333420-682083923.png)
或者
![](https://images2015.cnblogs.com/blog/380239/201704/380239-20170405134935222-640758181.png)
![](file:///C:/Users/jiashubing/AppData/Local/YNote/data/qq89D9FE57681F8194E36D56F4A18CFC71/2d5928b7c0924a4cbe95b6d78f07b58c/clipboard.png)
![](file:///C:/Users/jiashubing/AppData/Local/YNote/data/qq89D9FE57681F8194E36D56F4A18CFC71/5e066c0c1cca4db59453fbb6623525d2/clipboard.png)
如果出现以下错误,那是因为第一步没有执行jar包
![](file:///C:/Users/jiashubing/AppData/Local/YNote/data/qq89D9FE57681F8194E36D56F4A18CFC71/3bde59b8a9bf47f2ae649350855b0300/clipboard.png)
Unable to open debgger port(localhost:5005):java.net.ConnectException"Connection refused:connect"
![](https://images2015.cnblogs.com/blog/380239/201704/380239-20170405135000832-1314918357.png)
出现这个表示成功,接下来就可以打断点调试了,和本地运行一样打断点,注意保持本地代码和jar代码一致,不然会出现断点无效的情况
![](https://img2018.cnblogs.com/blog/890191/201909/890191-20190905171450356-1572727973.png)