2012年12月3日月曜日

【Eclipse】プラグインをデバッグする

Eclipseのプラグインでデバッグメッセージを出力する良い方法が見つかったのでメモ。

問題


  • Eclipseに自作プラグインを入れてEclipseを通常起動させても、標準出力・標準エラー出力が表示されない。
    つまり System.out.println を用いてデバッグメッセージを表示しようと思っても、画面に表示されない。
  • java.util.logging.Loggerを使おうと思っても、やっぱり標準出力が表示できないので無意味。
    もし標準出力が出るようになっても、ロギングレベルの設定方法が分からない。(まさか常にsetLevel(Level.ALL)するわけにも行かないですし)

やりたいこと

デバッグしたいなあ、と思ったときに、プラグインを再コンパイルせずに、デバッグメッセージをターミナルへ表示したい


解決策

Eclipseをデバッグモードで起動する方法を覚える

詳しくはRunning Eclipseを読みましょう。要点をまとめます。

Eclipseは
$ eclipse -debug
でデバッグモードで起動できます。Macならこんな感じ。
$ /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse -debug

さらに、 -consolelog オプションを付けると、標準出力がコンソールへ接続されます。

プラグインのデバッグメッセージの表示のON/OFFをフラグ化


フラグ化することで、プラグインの再コンパイルなしにデバッグメッセージのON/OFFを制御できるようになります。

こんなクラスを作ります。
/**
 * .options読み込みクラス
 * @author uchan
 *
 */
public class DebugOptions {

    public static final boolean verbose;

    static {
        verbose = Boolean.parseBoolean(Platform.getDebugOption(
                "com.github.uchan_nos.c_helper/verbose"));
    }
}

プログラム中では
if (DebugOptions.verbose) {
    logger.fine("debug message");
}
という風に使います。

あとはこんな感じの設定ファイルを作ります。

~/eclipse.options
# Output verbose messages
com.github.uchan_nos.c_helper/verbose=true

そして、Eclipseの -debug オプションの引数として指定します。

$ eclipse -debug ~/eclipse.options

起動ログに

Debug options:
    file:/Users/uchan/eclipse.options loaded
という表示があれば成功です。

0 件のコメント:

コメントを投稿