====== Build ====== hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/ cd jdk8u sh ./get_source.sh sh ./configure --with-debug-level=slowdebug --disable-zip-debug-info ====== Options ====== * - -XX:+UnlockExperimentalVMOptions * - -Xprintflags * - -XX+PrintFlagsWithComments * - -XX:+PrintFlagsInitial * - -XX:+PrintFlagsFinal * - -XX:+CountBytecodes * - -XX:+PrintBytecodeHistogram * - -XX:+Printinterpreter * - -XX:+TraceBytecodes * - -XX:StopInterpreterAt= * - set `b breakpoint` at GDB * - -XX:CompileCommand="break " * - -XX:CompileCommand="print " ====== Template Intepreter ====== This requires hsdis: cd hotspot/src/share/tools/hsdis/ wget http://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.xz tar xvf binutils-2.33.1.tar.xz make all64 BINUTILS=binutils-2.33.1 cp build/linux-amd64/hsdis-amd64.so /same/path/to/libjvm.so ./java -XX:+PrintInterpreter Hello ====== GDB ====== * - `call help()` * - `call pns($sp, $rbp, $pc)` ====== Reference ====== http://www.progdoc.de/papers/JavaOne2014/javaone2014_con3138.html