Java虚拟机(HOTSPOT)gdb调试步骤

版权声明:本文为博主原创文章,如需转载请注明出处。

准备

编译好的Hotspot虚拟机
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进去
940491-20160420233009195-1149419457.png

调试前导入变量:
请将下面shell中/home/zxf/换成你自己的openjdk7源代码目录

export LD_LIBRARY_PATH=/home/zxf/openjdk7/build-debug/hotspot/outputdir/linux_i486_compiler1/jvmg/ 
export JAVA_HOME=/home/zxf/openjdk7/build-debug/j2sdk-image/
export CLASSPATH=.:/home/zxf/openjdk7/build-debug/j2sdk-image/lib:/home/zxf/openjdk7/build-debug/j2sdk-image/jre/lib

940491-20160420233119601-1428152589.png

开始调试:
jvmg目录下的gamma文件就是虚拟机程序
940491-20160420233238632-1830915081.png

设置断点:
注意下面这个断点设置一定要让gdb开始调试了即r命令后才能设置上。

b Threads::create_vm

940491-20160420233318991-1318004250.png

进入核心函数cream_vm
940491-20160420233344585-656222653.png

本文出处

转载于:https://www.cnblogs.com/zxfdream/p/5414968.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值