スレッドアナライザ、パフォーマンスアナライザ、er_print ユーティリティで、デッドロック検出実験を検証できます。スレッドアナライザおよびパフォーマンスアナライザはどちらも GUI インタフェースを表示します。スレッドアナライザはデフォルトの簡略セットのタブを表示しますが、それ以外はパフォーマンスアナライザと同じです。
スレッドアナライザを開始して、din_philo.1.er 実験結果を開くには、次のコマンドを入力します。
% tha din_philo.1.er |
スレッドアナライザは、メニューバー、ツールバー、および各種表示用のタブを含む分割区画で構成されます。
デッドロック検出用に収集された実験結果を開くと、デフォルトで、左側の区画に次のタブが表示されます。
「デッドロック」タブ
このタブには、潜在的デッドロックと実デッドロックの一覧が示されます。デフォルトでこのタブが選択されています。各デッドロックに関わるスレッドが示されます。これらのスレッドは、各スレッドがロックを保持し、チェーン内の次のスレッドが保持している別のロックを要求するという巡回チェーンを形成しています。
「デュアルソース (Dual Source)」タブ
「デッドロック (Deadlocks)」タブで巡回チェーン内のスレッドを選択し、続いて「デュアルソース (Dual Source)」タブをクリックします。「デュアルソース (Dual Source)」タブには、スレッドがロックを保持したソース位置と、同じスレッドがロックを要求したソース位置が示されます。スレッドがロックを保持し要求したソース行が強調表示されます。
「実験」タブ
このタブには、実験でのロードオブジェクトが表示され、エラーおよび警告メッセージが一覧表示されます。
スレッドアナライザ画面の右側区画に次のタブが表示されます。
「デッドロック (Deadlocks)」タブから選択したデッドロックの概要情報を示した「概要 (Summary)」タブ。
「デッドロック (Deadlocks)」タブから選択したスレッドコンテキストの詳細情報を示した「デッドロックの詳細 (Deadlock Details)」タブ。
er_print ユーティリティは、コマンド行インタフェースを表示します。インタラクティブセッションで er_print ユーティリティを使用して、セッション中にサブコマンドを指定します。コマンド行オプションを使用して、インタラクティブでない方法でもサブコマンドを指定できます。
次のサブコマンドは、 er_print ユーティリティでデッドロックを調べるときに役立ちます。
-deadlocks
このオプションは、実験で検出された潜在的デッドロックおよび実デッドロックについて報告します。(er_print) プロンプトで deadlocks を指定するか、er_print コマンド行で -deadlocks を指定します。
-ddetail deadlock_id
このオプションは、指定した deadlock_id を持つデッドロックの詳細な情報を返します。(er_print) プロンプトで ddetail を指定するか、er_print コマンド行で -ddetail を指定します。指定された deadlock_id が all の場合、すべてのデッドロックの詳細情報が表示されます。それ以外では、最初のデッドロックを表す 1 などの単一のデッドロック番号を指定します。
-header
このオプションは、実験に関する記述的情報を表示し、すべてのエラーまたは警告を報告します。(er_print) プロンプトで header と指定するか、コマンド行で -header と指定します。
詳細は、collect(1)、tha(1)、analyzer(1)、および er_print(1) のマニュアルページを参照してください。