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進去

調試前導入變量:
請將下面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

開始調試:
jvmg目錄下的gamma文件就是虛擬機程序

設置斷點:
注意下面這個斷點設置一定要讓gdb開始調試了即r命令后才能設置上。

b Threads::create_vm

進入核心函數cream_vm

本文出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM