uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

非対話型デバッガYouDebug

Hudsonの川口さんが作った非対話型デバッガ、YouDebugというものが話題になっています。これはおもしろい。
本来なら試してから書きたいけどちょっとまだです。デバッガインターフェース経由のJVMのコントロールを、Groovy DSLを使って制御するというものです。

http://d.hatena.ne.jp/kkawa/20091108

ちゃんとした説明は先とかこちらを参照ください。

ソースを修正して再実行、デバッグってのは良くあると思うのでその作業の自動化にもつながると思うんですね。
もっとクレバーなやつなら、

  • どのバージョンでそのバグが生じたかを、過去のソースリポジトリの各バージョンから2分探索でcheckoutしながら再実行・再デバッグ実行し、再現する最古のバージョンを特定する
  • 他の呼び出しの副作用として問題が発現する場合、実行フローの特定の部分をコメントアウトしつつ「どの呼び出しが実行された場合」「されなかった場合に」にバグが発現するかを再実行・再デバッグ実行して特定

の手順とかが自動化されると素敵ですねー。前者はHudsonと組み合わせると素敵。って、もともとそういう目的なのかな。

また、このデバッガインターフェースを使ったユニットテストコードを書けば、ユニットテストというものがものすごく高機能化・昇華し別次元のものになる気がします。モックテストツールなんか目じゃないですね。なにしろ

  • 特定のコードに到達したときに特定の変数の値が特定の値であることを確認する試験

が、モックしなくてもかけますからね。

すげー。すげー。