スレッドデータ共有イベントの検出からの除外

特定のスレッドデータ共有イベントの検出[Thread Data Sharing Events (スレッドデータ共有イベント)] ウィンドウでの表示を抑制することで、誤検出されたイベントを表示しないようにできます。さまざまなアクセスの種類についてスレッドデータ共有の解析をフィルターし、以降の検出から除外します。

データ共有イベントを検出から除外するには、次の操作を行います。

  1. [Thread Data Sharing Events (スレッドデータ共有イベント)] ウィンドウで、データ共有検出から除外するイベントを右クリックします。 [Thread Data Sharing Events (スレッドデータ共有イベント)] ウィンドウのポップアップ・メニューが表示されます。
  2. [Suppress Reporting of Future Accesses (以降のアクセスのレポートを表示しない)] を選択して、次のいずれかのアクセスの種類を指定します。
    オプション 説明
    [From this Access (このアクセスから)] 選択したイベントを生成したアクセスに対するスレッドデータ共有検出を除外します。
    [From this Function (この関数から)] 選択したイベントを生成した関数に対するすべてのスレッドデータ共有検出を除外します。
    [From this Source File (このソースファイルから)] 選択したイベントを生成したソースファイルに対するすべてのスレッドデータ共有検出を除外します。
    [From this Source Line (このソース行から)] 選択したイベントを生成したソース行に対するすべてのスレッドデータ共有検出を除外します。
    [To this Data Object (このデータ・オブジェクト)] 選択したイベントを生成したデータ・オブジェクトに対するすべてのスレッドデータ共有検出を除外します。
  3. または、次のいずれかのコマンドを入力します。
    コマンド 説明
    idb sharing filter add file filename 指定したファイルのデータ共有イベントを無視します。
    idb sharing filter add function function_name 指定した関数のデータ共有イベントを無視します。
    idb sharing filter add range start_address, end_address 指定したアドレス範囲のデータ共有イベントを無視します。
    idb sharing filter add variable variable [, size] 指定した変数のデータ共有イベントを無視します。

インテル® デバッガーは、選択した種類からの以降にアクセスを無視して、そのデータ共有イベントを検出しません。

すでに [Thread Data Sharing Events (スレッドデータ共有イベント)] ウィンドウに表示されているイベントは除外できません。解析を削除するには、[Thread Data Sharing Events (スレッドデータ共有イベント)] ウィンドウで削除する解析を右クリックして、ポップアップ・メニューから [Delete (削除)] を選択します。ランタイム・ライブラリーからすべての履歴を消去するには、ポップアップ・メニューから [Reset Current Detection (現在の検出のリセット)] を選択します。

例: スレッドデータ共有イベントの除外 (C++)

次のコードについて考えてみます。

i += x;

3 つのメモリーアクセスが含まれています。

この行に対して、スレッドデータ共有イベントは 3 つ検出されます。

  1. 検出されたイベントのいずれかを右クリックして、[From this Source Line (このソース行から)] を選択します。

  2. アプリケーションを再実行します。

この 3 つのイベントは同じソース行で生成されるため、指定したフィルターは、これらを検出から除外します。

  1. [Thread Data Sharing Filters (スレッドデータ共有フィルター)] ボタン をクリックして、[Thread Data Sharing Filters (スレッドデータ共有フィルター)] ウィンドウを表示します。

  2. [Thread Data Sharing Filters (スレッドデータ共有フィルター)] ウィンドウで、指定したフィルターを右クリックして [Disable (無効)] を選択します。

  3. アプリケーションを再実行します。

  4. 検出されたイベントのいずれかを右クリックして、[From this Access (このアクセスから)] を選択します。

  5. アプリケーションを再実行します。

選択したイベントは 1 つの特定のアクセスによって発生するため、指定したフィルターは選択したイベントのみを除外します。

関連情報


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