一)、查看关于-agentlib命令
在终端命令行中输入"java"就能看到"-agentlib"命令
二)、关于-agentlib的详细使用说明
根据上边提示的文字,我们可以输入以下命令来查看关于-agentlib的详细使用
java -agentlib:jdwp=help
我们一般会使用到前面列举的四个选项,transport
的值为dt_socket
。
- 如果是本地环境,address可以不用加ip地址
运行以下命令,就可以让jar以远程调试的形式启动,会监听调试器的连接
java -agentlib:jdwp=suspend=y,transport=dt_socket,address=9090,server=y -jar spring_boot_dissect-1.0.jar
三)、IDEA添加远程调试配置
四)、IDEA远程调试项目
当我们想要深入研究Spring Boot Loader的源码时,由于我们无法直接在IDEA通过运行启动类的main进入到相关类的源代码中,所以远程调试的技术就派上用场啦!
/**
* 主启动类
*
* @author MoCha
* @date 2020/06/11
*/
@SpringBootApplication
public class SpringBootDissectApplication {
public static void main(String[] args) {
System.out.println(SpringBootDissectApplication.class.getClassLoader());
SpringApplication.run(SpringBootDissectApplication.class, args);
}
}
// IDEA直接运行main方法,输出sun.misc.Launcher$AppClassLoader@18b4aac2
// 远程调试环境下,输出org.springframework.boot.loader.LaunchedURLClassLoader@2c9f9fb0