特定のスレッドデータ共有イベントの検出と [Thread Data Sharing Events (スレッドデータ共有イベント)] ウィンドウでの表示を抑制することで、誤検出されたイベントを表示しないようにできます。さまざまなアクセスの種類についてスレッドデータ共有の解析をフィルターし、以降の検出から除外します。
データ共有イベントを検出から除外するには、次の操作を行います。
インテル® デバッガーは、選択した種類からの以降にアクセスを無視して、そのデータ共有イベントを検出しません。
すでに [Thread Data Sharing Events (スレッドデータ共有イベント)] ウィンドウに表示されているイベントは除外できません。解析を削除するには、[Thread Data Sharing Events (スレッドデータ共有イベント)] ウィンドウで削除する解析を右クリックして、ポップアップ・メニューから [Delete (削除)] を選択します。ランタイム・ライブラリーからすべての履歴を消去するには、ポップアップ・メニューから [Reset Current Detection (現在の検出のリセット)] を選択します。
次のコードについて考えてみます。
i += x;
3 つのメモリーアクセスが含まれています。
i への読み取りアクセス
x への読み取りアクセス
i への書き込みアクセス
この行に対して、スレッドデータ共有イベントは 3 つ検出されます。
検出されたイベントのいずれかを右クリックして、[From this Source Line (このソース行から)] を選択します。
アプリケーションを再実行します。
この 3 つのイベントは同じソース行で生成されるため、指定したフィルターは、これらを検出から除外します。
[Thread Data Sharing Filters (スレッドデータ共有フィルター)] ボタン
をクリックして、[Thread Data Sharing Filters (スレッドデータ共有フィルター)] ウィンドウを表示します。
[Thread Data Sharing Filters (スレッドデータ共有フィルター)] ウィンドウで、指定したフィルターを右クリックして [Disable (無効)] を選択します。
アプリケーションを再実行します。
検出されたイベントのいずれかを右クリックして、[From this Access (このアクセスから)] を選択します。
アプリケーションを再実行します。
選択したイベントは 1 つの特定のアクセスによって発生するため、指定したフィルターは選択したイベントのみを除外します。