[スレッド] ウィンドウは、次の製品に該当します。
| Visual Studio のエディション | Visual Basic | C# | C++ | J# | Web Dev |
| Express Edition | × | × | ○ | × | × |
| Standard Edition | ○ | ○ | ○ | ○ | ○ |
| Pro/Team Edition | ○ | ○ | ○ | ○ | ○ |
スレッドのデバッグに関するヒントと既知の問題を以下に示します。
-
トレースは、マルチスレッド コードのさまざまなバグをデバッグするのに有効な方法です。マルチスレッド コードのデバッグでは、トレースポイントを使用できます。トレースポイントの詳細については、「方法 : トレースポイントとブレークポイントのアクションを指定する」を参照してください。
-
ブレークポイント フィルタを使用すると、個々のスレッドにブレークポイントを配置できます。詳細については、「方法 : ブレークポイント フィルタを指定する」を参照してください。
-
ユーザー インターフェイスを含むマルチスレッド アプリケーションのデバッグは、困難な場合があります。アプリケーションを別のコンピュータで実行し、リモート デバッグを使用することを検討してください。
-
ネイティブ コードでは SetThreadName API、マネージ コードでは Name プロパティを使用すると、スレッド名を設定できます。詳細については、「方法 : スレッド名を設定する (マネージ)」または「方法 : スレッド名を設定する (アンマネージ)」を参照してください。マネージ コードではスレッド ID でスレッドを識別できないため、スレッド名はマネージ コードで特に役立ちます。
-
マルチスレッド アプリケーションでのデッドロックは、特に扱いにくい種類のバグです。
-
ネイティブ コードのデバッグ時には、[ウォッチ] ウィンドウまたは [クイック ウォッチ] ダイアログ ボックスで「@TIB」と入力すると、[スレッド情報ブロック] の内容を表示できます。
-
ネイティブ コードのデバッグ時には、[ウォッチ] ウィンドウまたは [クイック ウォッチ] ダイアログ ボックスで「@Err」と入力すると、現在のスレッドの最終エラー コードを表示できます。
-
ネイティブ コードからマネージ コードへの呼び出しを持つ混合コードをデバッグするときに、マネージ コードは呼び出し元のネイティブ コードと同じ物理スレッドで実行されます。ネイティブ スレッドを中断または固定すると、マネージ コードも固定されます。
-
マルチスレッド アプリケーションのデバッグには、C ランタイム ライブラリ (CRT) 関数を使用できます。詳細については、「_malloc_dbg」を参照してください。
参照