2008年02月29日

Visual Studio 2008のマルチスレッドデバッグ機能

開発環境Visual C++ 2008(Standard Edition以上)

本日はVisual Studio 2008のマルチスレッドデバッグ機能を紹介します。
従来のVisual Studioからあった機能ですが、ほんのちょっとだけ進化しているようです。

Visual Studio 2008のマルチスレッドデバッグ機能

まずは従来からある機能を紹介します。 Visual Studio 2008でマルチスレッドアプリケーションをデバッグ実行すると、 以下のようなスレッドウィンドウを見ることができます。
マルチスレッドデバッグその1
大体見た目通りの機能です。 それぞれのスレッドのIDや名前、実行中の場所を表示してくれます。
この場合は、メインスレッドがDibInfo::CreateDibを実行中で、ワーカースレッドがDibBox::Loadを実行中であることが分かります (DibInfoがなんであるかとかそういうのは気にしないで下さい)。

スレッドウィンドウのワーカースレッドをクリックすると、以下のようになります。
マルチスレッドデバッグその2
ワーカースレッドの実行中の場所のソースコードが表示され、呼び出し履歴もワーカースレッドのものになります。

スレッドウィンドウを右クリックすると、以下のようなメニューが表示されます。
マルチスレッドデバッグその2
スレッドの凍結(=SUSPEND)やフラグ設定ができます。 フラグ設定はVisual Studio 2008の新機能です。フラグを設定すると、設定されていないスレッドと簡単に区別できるようになります。
スレッドがたくさんあり、注目したいスレッドを絞り込みたいときに便利そうです。上記の例のようにスレッドが2つのときはなんの役にも立ちませんが。
「16進数で表示」を選ぶとスレッドIDが16進数で表示されます。これもたぶんVisual Studio 2008の新機能です。 新機能というにはしょぼいですが、スレッドIDを16進数でデバッグ出力するようなコードと相性が良いです。

Visual Studio 2008のマルチスレッドデバッグ機能はこれで全てのようです。 特定のスレッドだけのステップ実行機能は欲しいと思ったのですが、無いようです(なんでやねん)。
他のスレッドを全て凍結させてからステップ実行すれば実現できますが、面倒です。

以上で紹介はお終いです。
今までより進化したのかどうか微妙なところです。
まだ使い込んでいないので安定性は分かりません。
Visual Studio 6.0やVisual Studio.NET 2003では、マルチスレッドアプリデバッグ中に開発環境が落ちる(反応しなくなる)ことが 良くありました。改善されているのを期待したいところです。

投稿者 MASATO : 2008年02月29日 00:01 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?