原文地址:https://marcin-chwedczuk.github.io/debugging-openjdk8-with-netbeans-on-ubuntu
概述如下:
1 当然是下载openjdk。我这里选的是jdk8u,这是目前公司使用的主流版本,另外jdk9和jdk10目录结构相较与传统的目录结构有不小变更,从已有的资料上找相关的代码会增加难度。两种下载方式:
1)hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/ . (注意后面这个代码当前目录的句点),这步完成之后还要执行下载下来的脚本。
2)使用git或其它方式从https://github.com/dmlloyd/openjdk下载完整的源代码。
2 下载编译源码所要使用的依赖。
sudo apt install
libx11-dev
libxext-dev
libxrender-dev
libxtst-dev
libxt-dev
libcups2-dev
libfreetype6-dev
libasound2-dev
(另外提一句,如果有哪位同学跟我一样使用的opensuse系统,最后那个libasound2-dev包是找不着的:可以安装alsa-devel这个包替代,libcups2-dev用cups-devel代替) 3 构建makefile 如遇cc1plus all warnings being treated as errors的编译问题。则定位至/hotspot/make/linux/makefiles/gcc.make(其中的Linux是对应的自己的操作系统),注释掉WARNINGS_ARE_ERRORS = -Werror这行代码。
$ cd openjdk-jdk8u/ $ chmod +x ./configure
$ ./configure --with-debug-level=slowdebug --with-target-bits=64 4编译
make 5 运行我们的java程序 0)准备一个HelloWorld.class文件 1) $ ./build/linux-x86_64-normal-server-slowdebug/jdk/bin/java -cp "/home/me/dev/java/helloWorld/" HelloWorld (第一个参数是你上步编译出的java可执行程序,第二个参数是classpath,这里指向你放class文件的目录,第三个是含有main方法的类名。 Hello, world!(这是输出)
6 用netbeans运行和调试我们的openjdk。如果要这样做,则3,4,5步皆可省略。 1)从官网下载netbeans,要求支持C++。 2)新建C++工程,并从已有源码导入。 3)配置并运行configure脚本。 4)配置完成后项目自动运行make。 5)构建完成后指定可执行的java程序如5.1。 6)在源码中设断点并点击debug按钮(如有信号中断弹出框,则选择“不再补获该信号”和”继续前进“。 这几个步骤说的比较简略,是因为引文作者已十分细心的给出了截图。故不再赘言。 7 加断点的位置。 参考https://www.cnblogs.com/bhlsheji/p/4017816.html这篇博文。