编译调试openjdk

1.编译失败情况

  • ubuntu18.04 编译8 9 10,编译出来后,eclipse调试报错:VM_Version::get_processor_features() SIGSEGV segmentation fault(这个其实不算错误)
  • ubuntu16.04编译8,没有--disable-warnings-as-errors,报错

bash ./configure --with-debug-level=slowdebug --with-extra-cflags=-Wall --with-extra-cxxflags=-Wall --disable-warnings-as-errors --with-target-bits=64

make all CONF=linux-x86_64-normal-server-slowdebug LOG=debug,cmdlines

make clean CONF=linux-x86_64-normal-server-slowdebug

2.关于SIGSEGV

GDB调试OpenJDK9时在SafeFetch32函数上发生段错误?
测试本来就是要触发SIGSEGV的,而GDB在调试的时候会在应用程序注册的signal handler之前先获取到signal,要continue才会跑到应用程序注册的signal handler去。您需要的是在GDB里配置:handle SIGSEGV noprint
("noprint"会隐式也指定了"nostop",这就正好。如果行为不对的话就手动多指定个nostop:handle SIGSEGV nostop noprint

这个在eclipse加载一个gdbinit即可,在gdbinit里面写上:handle SIGSEGV noprint,即可完成调试!

3.gdbinit语法

GDB配置与.gdbinit的编写
GDB实用插件(peda, gef, gdbinit)全解

  • 参考
    JDK-8038633 : crash in VM_Version::get_processor_features() on startup
    CentOS上编译OpenJDK8源码 以及 在eclipse上调试HotSpot虚拟机源码

你可能感兴趣的:(编译调试openjdk)