背景
在做JSR269的深度解析的时候,需要对javac的源代码进行单步调试并跟踪。因此在这里记录下具体的调试步骤。
调试环境:
OS: MacOS 10.14.5
JDK:JDK_1.8
IDEA: IntelliJ IDEA 2019.1.3
下载Javac源码
可以直接用JDK的github镜像仓库处下载,链接在此处;下载完成后checkout tag至:jdk8-b120。如果本地安装的是Oracle JDK,则源代码可能会有些细微差别。
修改IDEA监听端口
Help -> Edit Custom VM Options
在最后增加如下代码:
1 | -Dcompiler.process.debug.port=12346 |
增加port
后,idea在编译的时候,会自动开启监听端口12346
。
修改完成后记得需要重启IDEA
创建一个远程调试程序
如上图,Host
设置为localhost
,Port
设置为12346
。
启用编译调试
默认IDEA会禁用编译调试,这里需要开启一个开关,以此让IDEA在编译之前等待调试程序的链接。并且,这个配置在IDEA重启后会失效。
双击Shift
,打开平常搜索类的界面,输入debug build process
,如下图:
点击启用:
测试
点击编译,IDEA状态栏会出现如下提示:
这个就代表javac
编译器正在等待调试程序接入。
在main/Main.java
类内compile()
方法打上断点,并启动远程调试程序,即可进行javac
的调试。
That’s all