问题:
一般情况下,可以打成Jar包的项目,它的源码运行Application项目时,是可以直接调试源码的。但是实际项目在测试环境运行时是以jar的形势运行,碰到测试环境出问题,本地运行OK的这种情况,有两种case:1、远程在线调试,2、把jar下载下来,本地调试jar包
现以本地调试jar为例:
步骤:
1、通过以下命令启动 jar文件:(端口5005可以修改)
shell
java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 [你的 jar 文件]
这一步需要打开Terminal这个窗口,可以使用快捷键(Alt +F12)这里可以直接执行命令,如下:
2、创建一个"Remote" 执行配置:
3、保留 默认配置点击 "Apply" 和 "Ok"
4、因为你的Jar文件已经在执行了, 所以可以直接开始 debug:
关键点:IDEA源码必须与待调试jar包保持一致,切记!!!不然进不了debug模式!!!!
如果出现以下错误,那是因为第一步没有执行jar包
Unable to open debgger port(localhost:5005):java.net.ConnectException"Connection refused:connect"
后记:
这个方法也可以用来调试部署到远程服务器的Jar包,操作同上,要求线上服务器以下方式进行启动
java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 [你的 jar 文件]
不过,一般正式的公司对发布有着严格的规范,一般不允许在线去debug代码,容易影响线上用户。
作者:小虎暮雨
链接: