調試JDK源碼時,不能查看變數值怎麼解決?
前幾天本來想以debug模式看一下JDK的源碼,進入調試模式時才發現,根本看不到方法裡面變數值的情況。為什麼呢? JDK現在的版本中,編譯過後,去除了裡面的偵錯資訊。解決辦法是,編譯那些類,使其帶有調試信息,使用命令:javac -g
#查看了一些相關資料,現將解決方法放到下面
在d:\的根目錄下建立jdk7_src和jdk_debug目錄。
在JDK_HOME目錄下找到src.zip文件,並把它裡面的文件解壓縮到jdk7_src目錄下,然後在解壓縮後的目錄中刪除除了java、javax、org以外的其他目錄。
把JDK_HOME\jre\lib下的rt.jar放到你的工作目錄下,也就是d:\的根目錄下(這樣僅僅便於在命令列中不用指定大量的檔案名稱)。
執行指令dir /B /S /X jdk7_src\*.java > filelist.txt 去建立需要編譯的java檔案列表,用於javac指令編譯的輸入原始文件,dir命令相關參數說明,/B: 不輸出額外的文件資訊(沒有標題資訊或摘要),/S: 顯示指定目錄和所有子目錄中的文件,/X: 顯示為非8.3 檔案名稱產生的短名稱。格式是 /N 的格式, 短名稱插在長名前面。如果沒有短名稱,在其位置則顯示空白。
執行javac -J-Xms16m -J-Xmx1024m -sourcepath d:\jdk7_src -cp d:\rt.jar -d d:\jdk_debug -g @filelist.txt >> log.txt 2>&1 編譯後的檔案將放入jdk_debug資料夾,編譯產生的日誌將會儲存到log.txt檔案中。在日誌檔案中將看到大量的警告,但是沒有錯誤訊息。
進入jdk_debug目錄執行指令jar cf0 rt_debug.jar *,將編譯後的檔案打包成rt_debug.jar包。
把新產生的jar套件放到JDK_HOME\jre\lib\endorsed中(如果沒有endorsed資料夾,則手動建立)。
說明:JDK_HOME表示JDK的安裝路徑,本文所有的指令都在d:\下及其子目錄下執行的。
簡單點,也可以將我下面提供的JDK7的偵錯版本的rt_debug.jar放入endorsed資料夾中。
參考資料
debug jdk source can't watch variable what it is --stackoverflow
#Java Endorsed Standards Override Mechanism --java guides
rt_debug.jar下載
############ ###
以上是調試JDK源碼時,不能查看變數值怎麼解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

C++多執行緒偵錯可使用GDB:1.啟用偵錯資訊編譯;2.設定斷點;3.使用infothreads查看執行緒;4.用thread切換執行緒;5.使用next、stepi、locals調試。實戰案例調試死鎖:1.使用threadapplyallbt列印堆疊;2.檢查執行緒狀態;3.單步執行主執行緒;4.使用條件變數協調存取來解決死鎖。

如何使用LeakSanitizer調試C++記憶體洩漏?安裝LeakSanitizer。透過編譯標誌啟用LeakSanitizer。運行應用程式並分析LeakSanitizer報告。識別記憶體分配類型和分配位置。修復記憶體洩漏,確保釋放所有動態分配的記憶體。

本文介紹了Go函數調試和分析的捷徑,包括:內建偵錯器dlv,用於暫停執行、檢查變數、設定斷點。日誌記錄,使用log包記錄訊息,在調試時查看。效能分析工具pprof,產生呼叫圖並分析效能,使用gotoolpprof分析資料。實戰案例:透過pprof分析記憶體洩漏,產生呼叫圖顯示導致洩漏的函數。

有效調試Lambda表達式:IntelliJIDEA調試器:在變數宣告或方法上設定斷點,檢查內部變數和狀態,查看實際實作類別。 Java9+JVMTI:連接到運行時JVM取得標識符,檢查字節碼設定斷點,監視執行期間變數和狀態。

調試PHP非同步程式碼的工具包括:Psalm:靜態分析工具,可發現潛在錯誤。 ParallelLint:檢查非同步程式碼並提供建議的工具。 Xdebug:用於偵錯PHP應用程式的擴展,可透過啟用會話並逐步執行程式碼來偵錯。其他技巧還包括使用日誌記錄、斷言、局部運行程式碼和編寫單元測試。

並發測試和調試Java並發程式設計中的並發測試和調試至關重要,以下技術可供使用:並發測試:單元測試:隔離並測試單一並發任務。整合測試:測試多個並發任務之間的交互作用。負載測試:評估應用程式在高負載下的效能和可擴展性。並發調試:斷點:暫停線程執行並檢查變數或執行程式碼。日誌記錄:記錄線程事件和狀態。堆疊追蹤:識別異常源頭。視覺化工具:監視執行緒活動和資源使用情況。

常見的PHP偵錯錯誤包括:語法錯誤:檢查程式碼語法,確保沒有錯誤。未定義變數:在使用變數之前,請確保已將其初始化並賦值。缺少分號:為所有程式碼區塊加上分號。函數未定義:檢查函數名稱拼字是否正確,並確保已載入正確的檔案或PHP擴充。
