Multi-Threaded Debuggerが地味にスゴくて泣ける

この前その紹介記事見つけたんで,それを真似しながら実際動かしてみた。きしださんの例がちょうどよかったので,これを題材にしてみたよ。


Runner#run()の適当なところにブレイクポイント仕込んでデバッガを起動する。するとスレッドごとに同じ場所で止まるんで,こんな具合に教えてくれる(この時点ですでにスゴイ)。


適当なスレッド選んでステップ実行とかするわけなんだが,スレッドの一覧が表示されているんで,どんだけスレッドが起きてるとか,どのスレッドが止まってるとか丸分かり。さらにスレッド一覧の右端には,スレッドの停止・再開ボタンが付いているので,興味ないスレッドは先やっててみたいなことができる(スゴイよね)。


さらにダメ押しなのが,ステップ実行中に他のスレッドがどこで停止しているかも見える!!(超スゲぇ)
緑色の矢印&ハイライト行が現スレッドの実行位置で,歯車アイコンが他のスレッドの実行位置(停止位置?)を示してるワケ。んでもって,その歯車クリックすると,実行スレッドを切り替えることもできる。


うーん,地味にスゴいよ。>NetBeans
IntelliJで同じ事やってやれなくないけど,使い勝手はまったく及びませんでしたよ。これだから,NetBeansは侮れないのだ。
マルチスレッドまわりに注力してるあたりに,GUI復権狙ってる?的な深読みをしてしまうんだけど,考え過ぎかしらん。:-)


(追記) サーバサイドでも有効かどうか試してみた。NetBeansバンドルのTomcatで試したけど,サーブレットはおろかJSPですらMulti-Threaded Debugできた(当たり前か)。

おおーっ,もしかしたらスクリプトレット全開なレガシーJ2EEアプリのデバッグ楽になるかも!?とかって思ったけど,そんだけ古いとJVMも1.4以前でJPDAしかないからダメなんだろな。
#って勝手にJVMTI使ってるもんだと決めつけてるけど,その認識で合ってるよね?