携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情
上节我们成功编译了JDK,上节文章也是为这节准备的,我的文章都是循序渐进的,目的就是让大家能够明白,以后就不再提了哈。
代码准备
public class TestMain {
public static void main(String[] args) {
System.out.println("main-thread:"+Thread.currentThread().getName());
Thread.currentThread().setName("thread-main");
TestMain testMain = new TestMain();
testMain.startThread();
}
private void startThread() {
Thread thread = new Thread(() -> {
int i = 3;
while (i < 3) {
System.out.println(Thread.currentThread().getName());
i++;
}
});
thread.setName("child-thread");
thread.start();
}
}
调试工具gdb
系统是linux的,所以需要一个调试工具。先执行这个命令:sudo rpm -qa | grep gdb,看有没有。
我这有了就不装了。
如果没有需自行安装。
找到编译目录
这个目录下有我们编译好的jdk,目录跟常规jdk是相同的。
我们使用java-version 命令来看看:
这个是普通的jdk,那我们昨天编译完成了,怎么看我们是否编译成功呢?,就进上面的那个目录,然后执行以下命令:./java -version,可以看到openjdk的字样。
编译java文件
接着需要编译一下java文件
然后使用gdb java命令进入gdb,看到下面的界面就是进来了。
然后设置一个参数 set args,这是java后面的参数,比如执行的时候需要放置java 参数,比如类名称,然后敲一个start
看到断点打到地方了嘛?我们找一下对应的文件:
然后我们使用list命令查看一下这个代码:
是不是一样的?然后我们用n让断点往下走:
到这个方法,写不完了,后续再写: