2、配置远程环境
服务以 Jar 形式运行
在服务启动的时候需要增加启动参数
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar business.jar
服务在 tomcat 容器中
tomcat 的 bin 目录下的 catalina.sh 文件中增加配置
JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
服务在 docker 容器中
需要在 dockerfile 配置 ENTRYPOINT,也就是服务的启动参数。
注意:
远程调试需要确保本地代码合远程代码的完全一致,否则代码行数匹配不上无法达到调试的效果。
强制返回我们进行 debug 问题排查,有的时候只是想确认业务逻辑有没有问题,并不想真正去执行一些耗费资源、或者改变数据的操作,那么在这种场景下,我们可以借助于强制返回的功能,不执行方法后面的代码而指定一个返回值来继续后续的业务逻辑 debug。
从运行结果可以看得出来,加法的代码逻辑实际并没有执行,而是通过强制返回后直接执行了后面的业务逻辑。
在 debug 的过程中,有时候我们需要按照我们预想的逻辑进行问题排查定位,这种场景下我们可能需要修改某些变量的值以便于代码走入不同的预想的业务逻辑。通过 Alt F8 快捷键修改获取指定变量的值,右键 Set Value 设置新的值。