现在很多项目都是直接部署到服务器上,通常都是没有GUI界面的,也就是说没有办法进行本地调试。在日常工作中远程调试是非常重要的一个技能,虽然说这个没办法解决线上问题,但是可以在测试环境下进行远程调试从而找到线上问题的解决方法,因为这种方式比日志更加清晰,操作难度更低。下面通过调试weblogic服务器的方式来进行举例(为什么用weblogic,因为我刚好不会哈哈,工作需要才接触的)。
JVM虚拟机设置
无论是通过脚本方式启动还是命令行启动的形式,都需要添加以下JVM参数:
#针对JDK15.-1.8
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:8000
针对JDK1.9及以上
agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8000
如果是命令行的方式直接添加即可,但是如果是脚本方式启动的话需要去启动脚本中改动,如下图:
注意:这里需要找到一定会添加到JAVA_OPTIONS的区域,确保配置生效。
weblogic是有自己的调试方式的,但是我没有深究,这个对于我要表述的内容关系不大,因此没有说明。
此时我们输出启动脚本命令startWebLogic
即可看到服务已经停住了,在等待IDEA进入Debug模式。
IDEA设置
按照如图所示步骤即可配置好调试模式,名字改不改其实关系不大。
导入JAR包
根据bug出现的位置去找到对应的jar,小项目最好导入一整个,这样可以全局检索到。
没导入之前可以看到红色框选部分是只有jar包的,IDEA扫描完成之后会跳出这个界面,这里是因为我的Library中已经存在了一个modeles,也就是导入过了。
此时打开File -> Project Structure:
找到Project Settings下的Libraries,把这些删掉就可以了。
此时再添加为Library就可以了(我只是强迫症不喜欢重名,不用删除也可以)
此时modules下的jar就都可以打开了。