スレッドセットの同期

スレッドセットを同期するには、[Create Breakpoints (ブレークポイントの作成)] ダイアログボックスの [Code (コード)] タブでスレッド同期ブレークポイント (スレッド同期ポイント) を設定します。スレッド同期ポイントの場所を [Location (場所)] フィールドに、同期するスレッドを [Thread Filter (スレッドフィルター)] フィールドに入力します。オプションで、[Condition (条件)][Action (アクション)][Skip Count (スキップカウント)] を指定できます。

スレッド同期ポイントを設定するには、次の操作を行います。

  1. [Debug (デバッグ)] > [Create Breakpoint... (ブレークポイントの作成...)] を選択します。

    [Create Breakpoint (ブレークポイントの作成)] ダイアログボックスが表示されます。

  2. [Type (種類)] で、[Thread Syncpoint (スレッド同期ポイント)] を選択します。
  3. [Location (場所)] フィールドで、次のいずれかの式を入力します。
  4. 必要に応じて、[Condition (条件)] フィールドでブレークポイントの条件を定義します (例: choice == 2)。 条件は、アプリケーションが [Location (場所)] フィールドで指定したブレークポイントで停止してから評価されます。条件が満たされない場合、アプリケーションは実行を続けます。有効な条件については、「[Create Breakpoint (ブレークポイントの作成)] ダイアログボックス: [Code (コード)] タブ」を参照してください。
  5. オプションで、[Action (アクション)] フィールドにデバッガーコマンドを入力します。 ブレークポイントで実行が停止すると、コマンドが実行されます。
  6. 必要に応じて、[Skip Count (スキップカウント)] でスキップする数を定義します。 スキップカウントの数は、ブレークポイントのヒットを無視する回数を定義します。例えば、スキップする数が 2 のブレークポイントでは、3 回目に実行を停止します。
  7. 必要に応じて、[Continue (続行)] をオンにします。 アクションを処理した後に、ターゲット・アプリケーションの実行が続けられます。[Continue (続行)] がオフの場合は停止します。
  8. 同期するスレッドのスレッド ID を、[Thread Filter (スレッドフィルター)] フィールドに入力します。 [Threads (スレッド)] ウィンドウに表示されているように、整数値でスレッド ID を指定します。複数の場合は、カンマで区切ります。スレッドセットを指定するには、t:[start_id:end_id] 構文を使用します。または、[Browse (参照)] をクリックして、1 つまたは複数のスレッドセットを選択します。

    ブレークポイントは、スレッドバリアーを作成します。スレッドセットの任意のスレッドがこのバリアーに到達すると、そのスレッドは凍結され、スレッドセットのほかのスレッドがバリアーに到達するまで、デバッガーはステップ実行や継続の試みを無視します。

    スレッドセットのすべてのスレッドがバリアーに到達する前に手動で実行を停止した場合、すべてのスレッドがスレッド同期ポイントに到達するまで、デバッガーはすべてのスレッドを保留します。

  9. オプションで、ブレークポイントにヒットしてアクションが実行されたときに凍結解除するスレッドを、[Stopping Threads (停止スレッド)] フィールドに入力します。
  10. [OK] をクリックします。

ブレークポイントが行の先頭に表示されます。例えば、ソースコード行 100 のブレークポイントは、行 99 を実行した後に、アプリケーションを停止します。

関連情報


このヘルプトピックについてのフィードバックを送信