Eclipseのプラグインでデバッグメッセージを出力する良い方法が見つかったのでメモ。
問題
- Eclipseに自作プラグインを入れてEclipseを通常起動させても、標準出力・標準エラー出力が表示されない。
つまり System.out.println を用いてデバッグメッセージを表示しようと思っても、画面に表示されない。
- java.util.logging.Loggerを使おうと思っても、やっぱり標準出力が表示できないので無意味。
もし標準出力が出るようになっても、ロギングレベルの設定方法が分からない。(まさか常にsetLevel(Level.ALL)するわけにも行かないですし)
やりたいこと
デバッグしたいなあ、と思ったときに、プラグインを再コンパイルせずに、デバッグメッセージをターミナルへ表示したい
解決策
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
という表示があれば成功です。