次の方法で共有


マルチスレッド アプリケーションのデバッグ

スレッドは、オペレーティング システムでプロセッサ時間を割り当てる命令のシーケンスです。 オペレーティング システムで実行されているプロセスは、いずれも 1 つ以上のスレッドで構成されます。 複数のスレッドで構成されるプロセスをマルチスレッド プロセスといいます。

複数のプロセッサ、マルチコア プロセッサ、またはハイパースレッディング プロセッサを搭載したコンピューターでは、同時に複数のスレッドを実行できます。 複数のスレッドを同時に実行すると、プログラムのパフォーマンスは大幅に向上しますが、複数のスレッドを追跡する必要があるため、デバッグは難しくなります。

また、マルチスレッドには新しい種類の潜在的な問題が伴います。 たとえば、複数のスレッドが同じリソースにアクセスする必要があり、一度に 1 つのスレッドだけがそのリソースに安全にアクセスできるということがよくあります。 一度に 1 つのスレッドだけがリソースにアクセスできるようにするには、相互排他を適用する必要があります。 相互排他が正しく適用されなければ、デッドロック状態が発生し、すべてのスレッドが実行不能になる可能性があります。 デッドロックは、デバッグが特に困難な問題の 1 つです。

Visual Studio 2012 では、改良された [スレッド] ウィンドウ、新しい GPU スレッド ウィンドウ、新しい [並列ウォッチ] ウィンドウなど、ユーザー インターフェイスの強化により、マルチスレッド デバッグがさらに簡単になっています。スレッド インターフェイスの新機能の詳細について確認するには、チュートリアルを完了することをお勧めします。 「チュートリアル : マルチスレッド アプリケーションのデバッグ」および「チュートリアル : C++ AMP アプリケーションのデバッグ」を参照してください。

Visual Studio には、強力なブレークポイントとトレースポイントも用意されており、マルチスレッド アプリケーションのデバッグに役立ちます。 ブレークポイント フィルターを使用すると、個々のスレッドにブレークポイントを配置できます。 「ブレークポイントとトレースポイントの使用」を参照してください。

ユーザー インターフェイスを含むマルチスレッド アプリケーションは、特にデバッグが困難になることがあります。 その場合には、アプリケーションを別のコンピューターで実行し、リモート デバッグを使用することを検討してください。 詳細については、「リモート デバッグと診断」を参照してください。

このセクションの内容

関連項目

参照

その他の技術情報

スレッドとプロセスの操作

リモート デバッグと診断