Eclipseでソースアタッチ

ここでは、ソースアタッチについて説明します。 といっても、他のVMにリモートアタッチするわけではなく、 ソースにブレークポイントをかけステップ実行するための、 ふつうの?ソースアタッチです。

ソースにアタッチするには、ソースファイルが必要です。 TomcatやStrutsはオープンソースなので、ソースをダウンロードして 入手可能です。

Strutsソースアタッチ

Strutsのソースをダウンロードします。

以下から、strutsのソースをダウンロードします。

http://jakarta.apache.org/builds/jakarta-struts/release/v1.0.2/src/

パッケージエクスプローラーのstruts.jarを選択し、右クリック->プロパティー。

プロパティー画面でJavaソースの添付を選択。 アーカイブにダウンロードしたzipのパスを指定。

例:C:/download/jakarta/jakarta-struts-1.0.2-src.zip

ルートパスをブラウズし、ソースパスを指定。

例:jakarta-struts-1.0.2-src/src/share

OKボタンを押す。

パッケージエクスプローラ上でjarを開き(+を押し)、 クラスをダブルクリックして開きます。 ソースファイルが見えますね。

確認

org.apache.struts.action.ActionServletのソースを開きます。

processメソッドの中でブレイクを設定します。
メソッドは(初期設定で)画面右側のアウトラインから選択すると便利です。
ブレイクはソースウィンドウ左側の灰色の部分をダブルクリックです。

Tomcatを起動し、Actionを呼ぶと、ブレイクがかかりましたね。

ServletAPIソースアタッチ

以下から、適当なzipをダウンロードします(中身はほとんど同じです)。

http://jakarta.apache.org/builds/jakarta-servletapi-4/nightly/src/

ServletAPIの場合は、struts.jarと若干設定が異なります(Tomcatプラグインだからか?)。

パッケージエクスプローラ上のservlet.jarを選択、右クリック->プロパティーを選択します。

Javaソースの添付を選択します。

変数パスのアーカイブの、変数ボタンを押します。

変数選択で、新規ボタンを押し、名前にはユニークな任意の名前、 パスにはダウンロードしたソースのzipファイル(あるいは解凍したフォルダ)を指定します。

例:
名前 SERVLET_SRC
パス C:/download/jakarta/jakarta-tomcat-4.0.4-src.zip

ルート変数パスの方も同様に設定します。ここではパスに何も指定しません。

例:
名前 SERVLET_ROOT
パス 

ルート変数の拡張子ボタンを押し、zip内のソースパスを指定します。

例:(SERVLET_ROOT)/jakarta-servletapi-4/src/share

ちょっとこのあたりの設定の意味(変数が空で拡張子で設定?)が よくわかりませんが、とりあえずこの設定で動きます。

確認

javax.servlet.HttpServlet#servlet()メソッドの中でブレイクをかけます。

ブラウザからリクエストを送ると、ブレイクがかかりましたね。

Tomcatソースアタッチ

以下から、現在自分が使ってるバージョンのTOMCATのソースをダウンロードします。

http://jakarta.apache.org/builds/jakarta-tomcat-4.0/

手順は上のソースアタッチと同じです。

jasper-runtime.jarの他に、 TOMCAT_HOME/server/lib/catalina.jar などにアタッチしておくと、コンテナ側の処理もステップ実行できます。

JDKソースアタッチ

JDKは初期状態でアタッチ済です。 JDKの中までデバッグ可能です。

というわけで、ここでは日本語のJavaDocを設定してみましょう。 JDKの日本語ドキュメントを ダウンロードしてない人はダウンロードしましょう。

JRE_LIB...rt.jarを選択、右クリック->プロパテイーを選択。

Javadocロケーションを選択し、APIドキュメントのあるパスを設定します。

例:Javaロケーション: file:/C:/apps/j2sdk1.4.0_01/docs/ja/api/

F1キーから開くJavaDocはこのリンクへ飛べます。 でもF2ボタンで出てくるショートコメントはソースファイルから取得してるらしく。。。このJavaDocは反映されないようです。

えーいろいろソースアタッチしまくりましたが、実際使うのは、 自分たちが作成している部分について(struts.jarへのアタッチ)でしょう。 でも、まあ、servlet.jarの中とかJDKの中とかたまに追ってみるのも面白いっすよ。


(2002/10/4)


もどる