eclipse調試JDK內部源代碼

eclipse默認是無法調試JDK源代碼的,即使添加了src.zip 作爲source code也不能解析stack上的變量,只能看到類成員變量。

原因很簡單,JDK的源代碼是使用 javac -g:lines 參數進行編譯的,所以代碼裏面沒有所需的debug info。

解決方式也同樣簡單:重新編譯JDK的源代碼。

 

簡單寫了一個shell腳本,只要設置了 $JAVA_HOME 變量,就可以實現(不知道怎麼上傳附件,自己粘貼回去用吧,需要tools.jar 源代碼的類似原理)

 

  1. #!/bin/sh  
  2. if [ -z "$JAVA_HOME" ]  
  3. then  
  4.     echo "Must set JAVA_HOME"  
  5.     exit 1  
  6. fi  
  7. cd $JAVA_HOME  
  8. mkdir temp  
  9. cp src.zip temp/  
  10. cd temp/  
  11. mkdir out  
  12. unzip src.zip  
  13. rm src.zip  
  14. find . -name *.java > filelist  
  15. echo "$(wc -l filelist) java files to compile"  
  16. javac  -g -d out/ -J-Xmx1024m -cp "../jre/lib/tools.jar:../jre/lib/rt.jar" @filelist   
  17. if [ $? != 0 ]  
  18. then  
  19.     echo "compile error!"  
  20.     exit 1  
  21. fi  
  22. unzip $JAVA_HOME/jre/lib/rt.jar -d $JAVA_HOME/temp/old_classes  
  23. cp -r  $JAVA_HOME/temp/out/* $JAVA_HOME/temp/old_classes/  
  24. cd $JAVA_HOME/temp/old_classes/  
  25. jar cf rt_debug.jar *  
  26. cp rt_debug.jar $JAVA_HOME/jre/lib/  
  27. mv $JAVA_HOME/jre/lib/rt.jar $JAVA_HOME/lib/rt_old.jar  
  28. cd $JAVA_HOME/jre/lib/  
  29. ln -s rt_debug.jar rt.jar  
  30. rm -rf $JAVA_HOME/temp 

發佈了63 篇原創文章 · 獲贊 4 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章