RCP環境のリモートデバッグ

Uruma 0.3.0 をリリースしようと張り切っていたら、サンプルアプリが RCP 環境でうまく動かない問題が発生。

クラスローダとかリソースの読み込みに関する問題だと、Eclipse の runtime RCP 環境とスタンドアローンなRCP環境で挙動が異なるのがやっかいなところ。

runtime RCP の場合、通常プラグインはJarから展開された状態で動くのだが、スタンドアローンRCP では Jar に固めた状態でプラグインを実行するので、ローディングの仕組みが違うのだ。

でもスタンドアローンRCPだとデバッガが使えなくて不便ね、ということでリモートデバッグの方法をメモしておきます。


eclipse.exe から起動するRCP環境では、eclipse.ini (exeファイルの拡張子をiniに変えたもの)ファイルに Java の起動オプションを書くことができる。

-vmargs
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005

こんなかんじの eclipe.ini を用意しておいて eclipse.exe を起動。その状態で、Eclipse IDEデバッグダイアログから「リモートJavaアプリケーション」でデバッグ対象のエントリを作成し、「デバッグ」ボタンを押せば見事捕まえることができます。

なお、NISなどのクライアントファイアウォールを導入している場合はリモートデバッグ用のポートが使えるように、設定を確認すること。