数日前、当初はデバッグモードでJDKのソースコードを見ようと思っていましたが、デバッグモードに入ると、メソッド内の変数値がまったく表示されないことがわかりました。なぜ? JDK の現在のバージョンでは、デバッグ情報はコンパイル後に削除されます。解決策は、これらのクラスをデバッグ情報とともにコンパイルし、次のコマンドを使用することです: javac -g
関連情報を確認した後、以下の解決策を
のルートディレクトリにd:を作成します。 jdk7_src および jdk_debug ディレクトリ。
JDK_HOME ディレクトリで src.zip ファイルを見つけ、その中のファイルを jdk7_src ディレクトリに解凍し、解凍されたディレクトリ内の java、javax、org 以外のすべてを削除します。 。
JDK_HOMEjrelib の下にある 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 パッケージにパッケージ化します。
JDK_HOMEjrelibendorsedに置きます(承認されたフォルダーがない場合は、手動で作成します)。
注: JDK_HOME は、JDK のインストール パスを表します。この記事のすべてのコマンドは、d: とそのサブディレクトリで実行されます。
もっと簡単に言うと、以下で提供する JDK7 のデバッグ バージョンrt_debug.jar を endorsed フォルダーに入れることもできます。
参考資料
以上がJDKのソースコードをデバッグするときに変数の値が表示されない問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。