Oracle® Solaris Studio 12.4: スレッドアナライザユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

デッドロック検出実験を作成する

–r deadlock オプションを付けて collect コマンドを使用します。このオプションは、プログラムの実行中にデッドロック検出実験を作成します。

このチュートリアルの場合、次のコマンドを使用して、din_philo.1.er というデッドロック検出実験を作成します。

% collect -r deadlock -o din_philo.1.er din_philo

collect コマンドでは、デッドロック検出実験の作成時に役立つ次のコマンドが受け入れられます。

terminate

回復不可能なエラーが検出された場合は、プログラムを終了します。

abort

回復不可能なエラーが検出された場合は、プログラムを終了してコアダンプを出力します。

–continue

回復不可能なエラーが検出された場合も、プログラムの続行を許可します。

デフォルトの動作は terminate です。

必要な動作を実行するために、collect コマンドで前述のいずれかのオプションを使用できます。たとえば、実デッドロックが発生した場合にプログラムを終了してコアダンプを出力するには、次の collect コマンドを使用します。

% collect -r deadlock,abort -o din_philo.1.er din_philo

実デッドロックが発生した場合にプログラムをハングアップさせるには、次の collect コマンドを使用します。

% collect -r deadlock,continue -o din_philo.1.er din_philo

複数のデッドロック検出実験を作成することによって、デッドロックを検出する可能性を高められます。実験ごとに異なるスレッド数と異なる入力データを使用してください。たとえば、din_philo.c コードで、次の行の値を変更できます。

    13  #define PHILOS 5
    14  #define DELAY 5000
    15  #define FOOD 100

続いて、前述のようにコンパイルして、別の実験結果を収集できます。

詳しくは、collect(1) および collector(1) のマニュアルページを参照してください。