2009年10月02日

Non-stop multi-threaded debugging

GDBの7.0からReverse Debugging(ヒストリの逆実行)が入るということで、一部で話題になっているようです。

http://www.gnu.org/software/gdb/news/reversible.html
http://d.hatena.ne.jp/hayamiz/20090930/1254323169

(ネタ元は、私がtwitterに張ったURLのようです。すごいブックマークの数ですね。)

ちなみに私は、greenteaさんの獲物で知ったのですが、同僚の佐藤さんやkobaさん、社長などは既に知っていました。

この機能は、GCC Summit 2007で発表されたようです。
http://ols.108.redhat.com/2007/GCC-Reprints/GCC2007-Proceedings.pdf
"Reversible Debugging", Paul Brook(CodeSourcery), Daniel Jacobowitz (CodeSourcery), pp.69-76

佐藤さん曰く、Non-stop multi-threaded debuggingも地味だけど面白いとのことです。



この機能は、2007年ごろからCodeSourceryによって実装が進められていて、
http://sourceware.org/ml/gdb/2007-11/msg00198.html
GCC Summit 2008で発表されたようです。
http://www.gccsummit.org/2008/gcc-2008-proceedings.pdf

# 実際にオタワでの会議に参加した佐藤さん曰く、会場の反応はわりと微妙だったとか。確かにデモなどには、あまり栄えない機能かもしれません。

"Non-stop Multi-Threaded Debugging in GDB",
N. Sidwell, J. Blandy, V. Prus, P. Alves (CodeSourcery Inc) & S. Loosemore, pp.117-127
( http://www.codesourcery.com/publications/non_stop_multi_threaded_debugging_in_gdb.pdf )

マニュアルを見てみると、マルチスレッドプログラミングのデバッグ時に、non-stop modeというのが既に存在するようです。従来の、同時に全てのスレッドが止まるモデルはall-stop modeと位置づけられたとのこと。

http://sourceware.org/gdb/current/onlinedocs/gdb_6.html#SEC47

稼動中のシステムを止めないでリアルタイムデバッグしたい場合に役立つそうです。1つのスレッドだけが止まり、他のスレッドは動作を継続するので、例えばgdbのコマンドラインで何もしてなくても、見るたびに変数の値が変わったりするそうです。リアルタイムに変数の値を見るためには、UI側の対応も必要なので、IDEのサポートという話も出てきている感じなのかな?Eclipseが頑張っているみたいです。

Reverse Debugging, Multi-Process and Non-Stop Debugging Come to the CDT
http://live.eclipse.org/node/723

GDBは、やはり一番メジャーなデバッガですから、この調子でGDBが発展していき、有用性が広く認められるようになり、デバッガそのものの地位や評価が高まっていけば良いなと、デバッガベンダーの開発スタッフとしては思います。

トラックバックURL

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード