Heim  >  Artikel  >  Java  >  Wie kann das Problem gelöst werden, dass Variablenwerte beim Debuggen des JDK-Quellcodes nicht angezeigt werden können?

Wie kann das Problem gelöst werden, dass Variablenwerte beim Debuggen des JDK-Quellcodes nicht angezeigt werden können?

零下一度
零下一度Original
2017-06-26 14:31:351513Durchsuche

Vor ein paar Tagen wollte ich mir den JDK-Quellcode im Debug-Modus ansehen, aber als ich in den Debug-Modus wechselte, stellte ich fest, dass ich die Variablenwerte in den Methoden überhaupt nicht sehen konnte. Warum? In der aktuellen Version des JDK werden die Debugging-Informationen nach der Kompilierung entfernt. Die Lösung besteht darin, diese Klassen mit Debugging-Informationen zu kompilieren und den Befehl zu verwenden: javac -g

Nachdem ich einige relevante Informationen überprüft habe, werde ich die Lösung unten einfügen

  1. Erstellen Sie die Verzeichnisse jdk7_src und jdk_debug im Stammverzeichnis von d:.

  2. Suchen Sie die Datei src.zip im Verzeichnis JDK_HOME und extrahieren Sie die darin enthaltenen Dateien in das Verzeichnis jdk7_src Verzeichnis Laden Sie andere Verzeichnisse außer java, javax, org herunter und löschen Sie sie im dekomprimierten Verzeichnis.

  3. Legen Sie rt.jar unter JDK_HOMEjrelib in Ihr Arbeitsverzeichnis, also unter das Stammverzeichnis von d: (dies ist nur für Bequemlichkeit (keine Notwendigkeit, eine große Anzahl von Dateinamen in der Befehlszeile anzugeben).

  4. Führen Sie den Befehl dir /B /S /X jdk7_src*.java > filelist.txt aus, um eine Liste der Java-Dateien zu erstellen, für die kompiliert werden muss javac-Befehlskompilierung Eingabequelldatei, dir-befehlsbezogene Parameterbeschreibung, /B: gibt keine zusätzlichen Dateiinformationen aus (keine Titelinformationen oder Zusammenfassung), /S: zeigt das angegebene Verzeichnis an und Alle Unterverzeichnisse Dateien in /X: werden als Kurznamen angezeigt, die aus Nicht-8.3-Dateinamen generiert werden. Das Format ist /N-Format, wobei der Kurzname vor dem Langnamen eingefügt wird. Wenn kein Kurzname vorhanden ist, wird stattdessen ein Leerzeichen angezeigt.

  5. Ausführen javac -J-Xms16m -J-Xmx1024m -sourcepath d:jdk7_src -cp d:rt.jar -d d:jdk_debug -g @filelist.txt >> ; log.txt 2>&1 Die kompilierte Datei wird im Ordner jdk_debug abgelegt und das durch die Kompilierung generierte Protokoll wird in der Datei log.txt gespeichert. In der Protokolldatei werden viele Warnungen, aber keine Fehlermeldungen angezeigt.

  6. Geben Sie das Verzeichnis jdk_debug ein, führen Sie den Befehl jar cf0 rt_debug.jar * aus und packen Sie die kompilierte Datei in rt_debug. GlasPackung.

  7. Legen Sie das neu generierte JAR-Paket in JDK_HOMEjrelibendorsed ab (wenn kein Endorses-Ordner vorhanden ist, erstellen Sie ihn manuell).

 Hinweis: JDK_HOME stellt den Installationspfad von JDK dar. Alle Befehle in diesem Artikel werden unter d: und seinen Unterverzeichnissen ausgeführt.

Um es einfacher zu machen, können Sie auch die Debug-Version von JDK7 rt_debug.jar, die ich unten bereitgestellt habe, in den Ordner endorsed legen.

Referenzen

  • Debug-JDK-Quelle kann Variable nicht beobachten, was sie ist  --stackoverflow

  • Java Endorsed Standards Override Mechanism​​​​​​​​​​​​​​​​

Das obige ist der detaillierte Inhalt vonWie kann das Problem gelöst werden, dass Variablenwerte beim Debuggen des JDK-Quellcodes nicht angezeigt werden können?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn