IntelliJ IDEA 13.1 EAPのChronon Debuggerをお試しください!
IntelliJ IDEAの次期バージョン、13.1ではChronon Debugger をプラグインでサポートしいます。既にEAPよりお試し頂けます。ご存じでない方のために説明しますと、Chronon はJavaプログラムの動作状況を記録して、後から解析することができる革新的ツールです。複雑なバグを追跡するのにとても有効です。
Chrononは商用ツールで、通常はライセンスを購入する必要がありいますが、なんとIntelliJ IDEA 13.1 Ultimateをお使いの方は完全に無料でご利用いただけます。
プラグインのインストール
Chrononを有効にするにはまずSettings → Plugins → Install JetBrains pluginよりChrononを選択肢、インストールしてください。
Chronon Include/Excludeパターン
Chrononはcode instrumentationを使っており、どのクラスを記録するのか指定する必要があります。run configurationを開いてChrononタブよりInclude / Excludeパターンを指定します。沢山のクラスを指定しすぎるとパフォーマンスに影響があるため注意してください。
スレッド二つで配列のソート、またバブルソートをする簡単なプログラムでChrononの使いかたを見てみましょう。Chrononは単なるデバッガではなく、ビデオテープのように動作状況を巻き戻しできることに注目してください。
Run with Chronon
まず、Run → Run ‘ChrononDemo’よりアプリケーションを実行します。
アプリケーションの実行が終了したら、IntelliJ IDEAは記録を展開して、Chrononツールウィンドウで開きます(デバッガのように見えます)。もちろん、以前の記録を開くことも出来ます。その場合はメインメニューのRun → Open Chronon Recordingを選択してください。
Debugアクション
続いてRunメニューより記録データを進めたり巻き戻したりできます。
変数ヒストリ
停止している場所に応じて、Localsタブはローカル変数の値を表示してくれます。特定のローカル変数を選択すると、Historyタブでは記録している間に設定された値の履歴を表示します。変数の値はプリミティブ型か、”Include Pattern”で指定したクラスのみが表示されますので注意してください。
Historyタブ内でダブルクリックすると、その変更が行われた箇所にジャンプすることができます。
変更履歴はローカルの配列はコレクションについても記録されます。
スレッドの切り替え
Threadsタブではスレッドを切り替えられます。
メソッドヒストリ
Chrononツールで素晴らしいのはMethod Historyタブです。このタブで、書くメソッドの引数と戻り値の履歴を確認できます。どのようにしてメソッドが呼ばれたのか容易に確認できます。
ロギング
Loggingタブではプログラム実行時に特定のログを書き出すよう指定できます。
例外
Chrononは失敗したテストをデバッグするのに特に有効です。Exceptionsタブでは記録した例外を全て洗い出してくれ、ダブルクリックすることでその次点の状態へプレイバックすることができます。
ところで、JetBrainsではTeamCityビルドサーバで発生する再現の難しい現象をまさに上記の方法で調査しています。TeamCityではいつでもChrononを使ってテストを実行し、問題を解析してバグコードを洗い出すことができます。
Chrononを皆様の開発に役に立てば幸いです。また、いつも通りフィードバックを掲示板やYouTrackへいただければ幸いです。
Develop with Pleasure!