JD-Eclipseの利用方法は非常に簡単です。Eclipseのプロジェクト内のjarファイル内のクラスやクラスパス上のクラスをクリックした際に、ソースコードが存在しない場合、自動的に逆コンパイルされ、ソースコードが表示されます(図2)。
また、ソースコード中のメソッドから宣言を開いたり、コンソール中に表示されたスタックトレースをクリックしたり、デバッガ中のスレッドからクラスをクリックしても自動的に逆コンパイルできます。
Eclipse上のクラスからソースコードへジャンプする操作を行うだけで、自動的に逆コンパイルとソースコードの表示を行うので、クラスファイルであることを忘れるように自然に逆コンパイルしたソースコードを表示できます。
JD-Eclipseを利用すると、あまりにも自然に逆コンパイルされるため、逆コンパイルされたソースコードであることを忘れそうですが、JD-Eclipseにより逆コンパイルされたソースコードには、最後に逆コンパイルしたクラスの情報が記述されます。
/* Location: C:\usr\pleiades\workspace\test\lib\mylibrary.jar * Qualified Name: org.ultimania.compiled.Test * Java Class Version: 6 (50.0) * JD-Core Version: 0.5.3 */
また、ステートメントの元のソースコード上の行数を示すコメントが挿入されます。
/* 16 */ l.add("1"); /* 17 */ l.add("2"); /* 18 */ l.add("3"); /* 19 */ for (Iterator localIterator = l.iterator(); localIterator.hasNext(); ) { Object i = localIterator.next(); /* 20 */ System.out.println(i); /* */ }
例えば、「/* 16 */」の行は、もともとのソースコードの16行目に記述されていたコードであることを示します。デバッグするときのスタックトレース情報やスレッドダンプした行数から逆コンパイルされたコード上の場所を特定できます。
JD-Eclipseはデバッガと組み合わせたときに、その真価を発揮します(図3)。
アプリケーションをデバッグ中は、スレッドで実行中のクラスの行番号は、逆コンパイルされたコード中のコメントに記述された行番号に対応しているので、実行中の場所を確認できます。
ただし、実行位置を表す矢印は、実際の実行中の位置とずれているので、注意してください。
逆コンパイルされたコード中の変数の値などはそのまま見ることができ、普通にデバッグできます。
ご紹介したとおり、JD-Eclipseを使えば、ソースコードがなく、それ以上追跡できない場合でも、デバッガと組み合わせることで簡単に挙動を追跡できます。
また、ソースコードがある場合でも、そのソースコードを探したりEclipseへ設定する手間が省けます。さらにプロファイラなどと組み合わせると、トラブル解析に究極の力を発揮します。ぜひ一度使ってみることをお勧めします。
Copyright © ITmedia, Inc. All Rights Reserved.