WhatAKitty Daily

A Programmer's Daily Record

在IDEA中DEBUG Javac源码

WhatAKitty   阅读次数loading...

背景

在做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设置为localhostPort设置为12346

启用编译调试

默认IDEA会禁用编译调试,这里需要开启一个开关,以此让IDEA在编译之前等待调试程序的链接。并且,这个配置在IDEA重启后会失效

双击Shift,打开平常搜索类的界面,输入debug build process,如下图:

未启用

点击启用:

已启用

测试

点击编译,IDEA状态栏会出现如下提示:

等待

这个就代表javac编译器正在等待调试程序接入。

main/Main.java类内compile()方法打上断点,并启动远程调试程序,即可进行javac的调试。

调试

That’s all