因为本地和远程环境不一致,所以我们调试的结果和远程不太一样,很多时候我们都是通过打日志的方式查看结果,这个时候远程调试就显得非常有用了。
1、远程运行jar包
首先,我们要在远程运行jar包。建议通过sh方式运行。
java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081 -jar demo.jar
成功运行的结果:
Listening for transport dt_socket at address: 8001
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.1.RELEASE)
2019-08-06 17:33:43.999 INFO 30027 --- [ main] com.alvin.DemoApplication : Starting DemoApplication v1.0-SNAPSHOT on iZ2ze1m0zmp2di7u8cb4kcZ with PID 30027 (/home/alvin/Demo-1.0-SNAPSHOT.jar started by alvin in /home/alvin)
2、本地运行代码
本地新建remote,修改host和port,和远程保持一致,因为原理是通过soket链接的。
运行remote
成功的话会显示:
3、浏览器访问,查看断点
访问:http://39.106.43.67:8002/demo
注意这里的端口是web服务的端口,刚才提到的端口是socket端口。
然后成功进入断点,通过返回的系统版本判断成功。