Share via


方法 : [スレッド] ウィンドウを使用する

更新 : 2007 年 11 月

このトピックの内容は、次の製品に該当します。

Edition

Visual Basic

C#

C++

Web Developer

Express

トピック該当なし トピック該当なし トピック該当なし トピック該当なし

Standard

トピック該当 トピック該当 トピック該当 トピック該当

Pro/Team

トピック該当 トピック該当 トピック該当 トピック該当

表の凡例 :

トピック該当

対象

トピック該当なし

該当なし

トピックは該当しますが、コマンドは既定では非表示です

既定で非表示のコマンド

[スレッド] ウィンドウでは、デバッグ中のプログラム内のスレッドを調べて操作できます。

[スレッド] ウィンドウには、プログラムに存在する、現在のすべてのスレッドの一覧が表示されます。この一覧には、スレッドごとに次のような有用な情報が表示されます。

  • [名前] 列と [ID] 列には、スレッドを識別するためのスレッド名と ID 番号が表示されます。

  • [優先順位] 列には、システムが各スレッドに割り当てた優先度または優先順位が表示されます。

  • [中断] 列には、中断カウントが表示されます。スレッドが現在実行可能かどうかがこれによって判断できます。中断カウントの詳細については、このトピックの「スレッドの凍結と凍結解除」を参照してください。

  • [カテゴリ] 列には、スレッドがユーザー インターフェイス スレッド、リモート プロシージャ コール ハンドラ、ワーカー スレッドのどれに分類されるかが表示されます。この列では、メイン スレッドがどれかもわかります。

  • [場所] 列には、スレッドが作成されたソースの場所が表示されます。

  • 左端にあるラベルのない列は、フラグ列です。注目するスレッドにフラグを設定すると、この列にフラグ アイコンが表示されます。スレッドにフラグを設定する方法の詳細については、「方法 : スレッドに対するフラグの設定と設定解除を行う」を参照してください。

  • 最後に、左から 2 番目にラベルのない列がもう 1 つあります。これは、アクティブ スレッド列です。この列の黄色い矢印は、アクティブなスレッドを示します。

中断モードまたは実行モードで [スレッド] ウィンドウを表示するには

  • [デバッグ] メニューの [ウィンドウ] をポイントし、[スレッド] をクリックします。

スレッドの一覧を並べ替えるには

  1. [スレッド] ウィンドウで、並べ替えの基準とする列の最上部にあるボタンをクリックします。

    • フラグが設定されたスレッドを一覧の先頭に表示するには、左端のボタンをクリックします。

    • アクティブ スレッドを一覧の先頭に表示するには、左から 2 番目のボタンをクリックします。

    • ID 番号が最小のスレッドを先頭に表示するには、[ID] ボタンをクリックします。

    • スレッドをカテゴリ別に並べ替えるには、[カテゴリ] ボタンをクリックします。これにより、スレッドが機能カテゴリごとにアルファベット順に並べ替えられます。

    • スレッドを名前の順に並べ替えるには、[名前] ボタンをクリックします。

    • スレッドをソースの場所で並べ替えるには、[場所] ボタンをクリックします。

    • 優先度が高いスレッドから順に表示するには、[優先順位] ボタンをクリックします。

    • 中断カウントが最小のスレッドを先頭に表示するには、[中断] ボタンをクリックします。

  2. 並べ替え順序を逆にするには、同じボタンをもう一度クリックします。たとえば、スレッド ID 番号で並べ替える場合、ID 番号が最小のスレッドが先頭に表示されます。[ID] ボタンをもう一度クリックすると、ID 番号が最大のスレッドが先頭に表示されます。

デバッグ コンテキストを別のスレッドに切り替えるには

  • [スレッド] ウィンドウで、スレッドを右クリックし、ショートカット メニューの [スレッドに切り替え] をクリックします。

    または

  • 任意のスレッドをダブルクリックします。

    黄色の矢印はアクティブ スレッドを示します。

スレッドの凍結と凍結解除

スレッドは、凍結させたり凍結を解除させたりできます。スレッドが凍結している場合、システムは、利用できるリソースがあっても、そのスレッドの実行を開始しません。

ネイティブ コードでは、スレッドの中断と再開に、Windows 関数の SuspendThread と ResumeThread、または MFC 関数の CWinThread::SuspendThreadCWinThread::ResumeThread を使用します。SuspendThread または ResumeThread を呼び出すと、[スレッド] ウィンドウに表示されている中断カウントが変わります。ただし、ネイティブ スレッドを凍結または凍結解除しても、中断カウントは変わりません。ネイティブ コードでは、凍結が解除され、中断カウントがゼロになるまで、スレッドは実行されません。

マネージ コードでは、スレッドの凍結または凍結解除によって中断カウントが変わります。マネージ コードでは、凍結されたスレッドの中断カウントは 1 になります。ネイティブ コードでは、スレッドが SuspendThread 呼び出しによって中断されている場合を除き、凍結されたスレッドの中断カウントは 0 です。

w15yf86f.alert_note(ja-jp,VS.90).gifメモ :

ネイティブ コードからマネージ コードへの呼び出しをデバッグする場合、マネージ コードは呼び出し元のネイティブ コードと同じ物理スレッドで実行されます。ネイティブ スレッドを中断または凍結すると、マネージ コードも凍結されます。

スレッドの実行を凍結するには

  • [スレッド] ウィンドウで、スレッドを右クリックし、ショートカット メニューの [凍結] をクリックします。

スレッド実行の凍結を解除するには

  • [スレッド] ウィンドウで、凍結されたスレッドを右クリックし、ショートカット メニューの [凍結解除] をクリックします。

スレッドの呼び出し履歴の表示とフレームの切り替え

マルチスレッド プログラムでは、各スレッドに専用の呼び出し履歴があります。[スレッド] ウィンドウには、スレッドの呼び出し履歴を表示する便利な手段が用意されています。

スレッドの呼び出し履歴を表示するには

  • [スレッド] ウィンドウで、注目するスレッドに対応する行のアクティブ スレッド列にマウス ポインタを置きます。

    少し遅れて、データヒントが表示されます。そこに、スレッドの呼び出し履歴が表示されます。

参照

処理手順

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

その他の技術情報

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