Chronon Systemsが新しい Chronon Recording Server のベータリリースをアナウンスした。これは Chrononテストスイート用の「リモートコントロール」コンポーネントで、8月15日に バージョン1.8.7 になった。
それを使って、Javaアプリケーションが走っている間に、それがどこで走っていようが、その内部状態をレコードでき、後で、テストやデバッグのために、全プログラムの実行を「再生」できる。この再生式のデバッギングは、他のどのマシン、あるいは同じマシン上で、実行できる。レコードされたファイルだけがあればよい。 Chronon Systemsは、このすべてを1つのシンプルな言葉にしている。 "DVR for Java"。
EclipseプラグインであるChronon (コア)は、開発者に レコード再生 の力を与え、デバッグスタイルのセッションでプログラムの実行を検査できる。これまでのデバッガーのように、このプラグインは各ステップで、アプリケーションの全状態について、データの豊富なビューを提供する。プログラムの実行フローを更にフィルターし、評価できる多くの追加ツールもついてくる。
この Time Traveling Debugger は、あらゆるアクティブなスレッドの完全なスタックトレースと、いつの時点でも、メモリーの正確な内容を表示する。直ちに どの時点にも直接飛ぶことができ、実行を戻したり、進めたりできる。というのも、デバッガーツールに必要なのは、データベースのようにレコードしたファイルに問い合わせするだけだからある。
プログラムの全状態が保存されているので、 Chrononデバッガーは、これまでのデバッガーにはできないこともすることができる。例えば、特定の変数に割当てられたすべての値を表示したり、あるいは、その変数が特定の値、例えば「null」になった時に、探して、直ちに飛んだりできる。
Chrononレコーダーは、Javaアプリケーションの横にいるJavaエージェントとして走っている 。メモリーにロードされるクラスのバイトコードをインストラメントして、Javaプログラムが何をしているかについてのデータを観察し、集める。データは、非同期に圧縮され、ディスク上のファイルに保存されので、後で例えば開発者のマシンのような、どのコンピュータにも転送できる。その場合には、上述したように "Time Traveling Debugger" を使って、プログラムを再生し、検証することができる。
これは特に、長時間稼動しているサーバープログラムに有効だろう。なぜなら、これまでのデバッグツールを使うのと違って、ブレークポイントを設定して、問題を再現させる方法を見つけ、そしてブレークポイントにヒットするまで何時間も待つことは、必要ないのである。例えば、例外が最初に起きた後に、レコードしたファイルを取り込み、例外の発生箇所に直接飛んで、例外の原因を特定するために「少しづつ巻き戻す」ことができる。
ツールセットに最も新しく加わったのは、Chronon Recording Serverコンポーネントで、これによって、リモートマシンで走っている複数のJVM上のレコーダーを管理でき、簡単に、チームメンバー間でレコードしたファイルを共有できる。この新しい「サーバーモード」で、Chronon レコーダーは、走っているJavaプログラムのレコーディングを動的に開始したり、停止したりできる。例えばバグのような、プログラムについて何か望ましくないことが報告された時に、レコードサーバーは、直ちに切り替えられるので、問題の再現が見れる。ロギングコードを追加したり、リモートデバッグ セッションを再配置したり、設定したりする必要はない。
Chronon Systems の 人々 は、自分達のツールスイートの利点を以下のようなまとめている。
- ログファイルを扱う必要がない: プログラム全体をレコードして、どのマシン上でも再生できる。このため、情報を書きだす大きなログファイルがほとんど不要になる。
- リモートのJavaプログラムをレコードできる: あなたの組織にあるあらゆるコンピュータをレコードサーバーにつないで、各マシン上のレコーダーを管理できる。
- QAと開発が簡単にコラボできる: レコードサーバーを使うと、レコーダーはバックグラウンドで走っているので、QAは、Javaプログラムをテストし続けることができる。どんな問題が起きても、開発チームは、QAのマシンからレコードされたものを簡単にダウンロードして、 “time travelling debugger”を使ってそれをデバッグできる。
- 長時間動いているアプリケーションをレコードできる: Chronon レコードサーバーは、何日、何週間、たとえ何ヶ月も稼働するプログラムをレコードできるように設計されている。レコードサーバーは、もしレコードしたファイルが大きくなり過ぎたら、それを分割して、古いものを捨て去る。
- 動的にレコーディングを開始、停止できる: レコードサーバーにより、走っているJavaアプリケーションに対して、Chronon レコーダーを動的に開始、停止できる。いつもレコーダーを使用できる状態で、アプリケーションを走らせ、必要な時だけレコードするのが良い。
2,3週間で ベータ版 が無償で入手できる。使ってみて、見つけたことやフィードバックをここで報告して欲しい。