IDEA远程执行详解
新建一个springboot项目
新建一个java class:
@RestController public class TestController { @RequestMapping("/test") public Integer test() { int i = 0; i++; return i; } }
打包:mvn clean package
生成jar包
放到远程服务器上(也可以在本地cmd命令下调试,host为localhost),以Jar包的方式执行
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8010 -jar demo-0.0.1-SNAPSHOT.jar
其中 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8010 是在IDEA里配置参数时复制过来的。各参数含义如下:
transport 用于在调试程序和 VM 使用的进程之间通讯。 dt_socket 套接字传输。 dt_shmem 共享内存传输,仅限于 Windows。 server=y/n VM 是否需要作为调试服务器执行。 address=8010 调试服务器的端口号,客户端用来连接服务器的端口号。 suspend=y/n 是否在调试客户端建立连接之后启动 VM 。
当然,也可以在服务器的启动脚本里通过添加参数的方式执行。
IDEA的配置:
添加一个Remote
然后开始debug,出现下面的信息说明连接成功:
Connected to the target VM, address: '10.193.215.16:8010', transport: 'socket'
访问网址:
http://10.193.215.16:8080/test
会发现程序阻塞。进入断点,就可以开始调试了。
如果你想修改默认8080服务端口,比如改成8020,可以在application.properties配置如下:
server.port=8020
然后服务器端启动脚本要加上-Dserver.port=8020 参数:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8010 -Dserver.port=8020 -jar demo-0.0.1-SNAPSHOT.jar