编译好的Hotspot虚拟机
Ubuntu 14.04下Java虚拟机(HOTSPOT)源代码编译步骤 :
GDB基本操作:
Linux编程基础——GDB(入门)与 Linux编程基础——GDB(设置断点) 见
系统:
Ubuntu 14.04
可调试的虚拟机位置:
openjdk7:源代码目录
build-debug:编译后的二进制文件位置
build-debug/hotspot/outputdir/linux_i486_compiler1/jvmg:虚拟机位置
如果按照Java虚拟机(HOTSPOT)源代码编译步骤进行代码编译,下面的操作之前,请切换到root用户。
解压缩调试符号:
务必要把虚拟机目录下的libjvm.diz里的内容解压到虚拟机所在目录,做一次就可以,不需要每次调试都解压
/home/zxf/openjdk7/build-debug/hotspot/outputdir/linux_i486_compiler1/jvmg的libjvm.diz解压到当前目录中,否则只能进行表层调试,像Threads::create_vm无法break into进去
调试前导入变量:
请将下面shell中/home/zxf/换成你自己的openjdk7源代码目录
开始调试:
jvmg目录下的gamma文件就是虚拟机程序
设置断点:
注意下面这个断点设置一定要让gdb开始调试了即r命令后才能设置上。
进入核心函数cream_vm
使用GDB调试Python程序