スレッドアナライザ、パフォーマンスアナライザ、er_print ユーティリティーで、データ競合の検出実験を検証できます。スレッドアナライザおよびパフォーマンスアナライザはどちらも GUI インタフェースを表示します。スレッドアナライザはデフォルトビューの簡略セットを表示しますが、それ以外はパフォーマンスアナライザと同じです。
スレッドアナライザを開始するには、次のコマンドを入力します。
% tha
スレッドアナライザをはじめて起動すると、開始画面が表示されます。
スレッドアナライザには、メニューバー、ツールバー、左側にデータビューを選択できる垂直のナビゲーションバーが表示されます。
デフォルトでは次のデータビューが表示されます。
「概要」画面には、ロードされた実験のメトリックの概要が表示されます。
「競合」ビューには、プログラムで検出されたデータの競合と、関連する呼び出しスタックトレースの一覧が表示されます。デフォルトではこのビューが選択されています。「競合」ビューで項目を選択すると、選択したデータの競合または呼び出しスタックトレースの詳細情報が「競合の詳細」ウィンドウに表示されます。
「デュアルソース」ビューには、選択したデータの競合の 2 つのアクセスに対応する 2 つのソースの位置が表示されます。データの競合アクセスが起きたソース行が強調表示されます。
「実験」ビューには、実験でのロードオブジェクトが表示され、エラーおよび警告メッセージが一覧表示されます。
「詳細ビュー」オプションメニューでほかのビューを表示できます。
er_print ユーティリティーは、コマンド行インタフェースを表示します。インタラクティブセッションで er_print ユーティリティーを使用して、セッション中にサブコマンドを指定します。コマンド行オプションを使用して、インタラクティブでない方法でもサブコマンドを指定できます。
次のサブコマンドは、er_print ユーティリティーで競合を調べるときに役立ちます。
–races
これは、実験で明らかになったデータの競合をすべて報告します。(er_print) プロンプトで races と指定するか、er_print コマンド行で –races と指定します。
–rdetail race_id
これにより、指定した race_id を持つデータの競合に関する詳細な情報が表示されます。(er_print) プロンプトで rdetail と指定するか、er_print コマンド行で –rdetail と指定します。指定した race_id が all の場合、すべてのデータの競合に関する詳細情報が表示されます。それ以外では、最初のデータの競合を表す 1 などの単一の競合番号を指定します。
–header
これは、実験に関する記述的情報を表示し、すべてのエラーまたは警告を報告します。(er_print) プロンプトで header と指定するか、コマンド行で –header と指定します。
詳細は、collect(1)、tha(1)、analyzer(1)、および er_print(1) のマニュアルページを参照してください。