Solaris モジューラデバッガ

dcmds

thread ::allocdby

指定されたカーネルスレッドのアドレスを使用して、そのスレッドが割り当てたメモリーのリストを新しい順に出力します。

bufctl ::bufctl [- a address] [-c caller ] [-e earliest] [- l latest] [-t thread ]

指定された bufctl address についての bufctl 情報の要約を出力します。1 つまたは複数のオプションが指定されている場合は、オプション引数によって定義される条件に一致する bufctl 情報だけが出力されます。したがって、この dcmd をパイプラインの入力のフィルタとして使用できます。-a オプションは、buctl の対応するバッファーアドレスが指定されたアドレスと等しくなるように指定します。-c オプションは、指定された呼び出し元のプログラムカウント値が bufctl の保存されているスタックトレースの中に存在するように指定します。-e オプションは、bufctl の時刻表示が、指定されたもっとも早い時刻表示と同じかそれよりも遅い時刻になるように指定します。-l オプションは、bufctl の時刻表示が、指定されたもっとも遅い時刻表示と同じかそれよりも早い時刻になるように指定します。-t オプションは、bufctl のスレッドポインタが、指定されたスレッドアドレスと等しくなるように指定します。

[ address ] ::findleaks [-v]

::findleaks dcmd は、フルセットの kmem デバッギング機能が有効になっている場合に、カーネルクラッシュダンプ時に効率的にメモリーリークを検出します。::findleaks の最初の実行では、ダンプを処理してメモリーリークを探します。この処理には数分かかる場合があります。次に、割り当てスタックトレース別にリークがまとめられます。findleaks レポートには、識別されたメモリーリークごとに bufctl アドレスと先頭のスタックフレームが表示されます。

-v オプションが指定されている場合には、この dcmd は実行の際により詳細なメッセージを出力します。dcmd の前に明示的にアドレスが指定されている場合には、レポートがフィルタリングされ、割り当てスタックトレースに指定された関数アドレスが含まれているリークだけが表示されます。

thread ::freedby

指定されたカーネルスレッドのアドレスを使用して、そのスレッドが解放したメモリーのリストを新しい順に出力します。

value ::kgrep

カーネルアドレス空間の中で、指定されたポインタサイズ値を含んでいるポインタ整列アドレスを検索します。次に、一致する値を含んでいるアドレスのリストを出力します。MDB の組み込み検索演算子とは異なり、::kgrep はカーネルアドレス空間のすべてのセグメントを検索し、不連続セグメント境界にまたがって検索します。大きなカーネルでは、::kgrep は実行にかなりの時間がかかる場合があります。

::kmalog [ slab | fail ]

カーネルメモリーアロケータトランザクションログ内のイベントを表示します。イベントは新しい順に (つまり、最新のイベントから) 表示されます。::kmalog は、イベントごとに、「T-」表示による最新のイベントを基準にした相対時間 (たとえば、T-0.000151879)、bufctl、バッファーアドレス、kmem キャッシュ名、およびイベント発生時刻におけるスタックトレースを表示します。引数を指定しないと、::kmalog は kmem トランザクションログを表示しますが、このログは kmem_flagsKMF_AUDIT が設定されている場合にだけ存在します。::kmalog fail は、割り当て障害ログを表示します。このログは必ず存在します。これは、割り当て障害に正しく対処できないドライバのデバッグを行う場合に役立ちます。::kmalog slab は、スラブ作成ログを表示します。このログは必ず存在します。::kmalog slab は、メモリーリークの検索を行う場合に役立ちます。

::kmastat

カーネルメモリーアロケータキャッシュおよび仮想メモリー領域のリストと該当する統計を表示します。

::kmausers [- ef] [cache ...]

カーネルメモリーアロケータの現在のメモリーの割り当てが中程度あるいは多いユーザーに関する情報を出力するこの出力は、一意的なスタックトレースごとに 1 つのエントリで構成され、そのスタックトレースを使用して作成された合計メモリー量と割り当ての数が示されます。この dcmd を使用するには、kmem_flagsKMF_AUDIT フラグが設定されている必要があります。

1 つまたは複数のキャッシュ名 (たとえば、kmem_alloc_256) が指定されている場合、メモリー使用率の走査はそれらのキャッシュでだけ行われます。デフォルトでは、すべてのキャッシュが含まれます。-e オプションを指定すると、割り当て量の少ないユーザーが含まれます。割り当ての少ないユーザーとは、同じスタックトレースの合計メモリーが 1024 バイト未満または割り当て数 10 未満であるような割り当てのことです。-f オプションを指定すると、個々の割り当てのスタックトレースが出力されます。

[ address ] ::kmem_cache

指定されたアドレスに格納されている kmem_cache 構造体、またはアクティブ kmem_cache 構造体の完全なセットをフォーマットし、表示します。

::kmem_log

kmem トランザクションログの完全なセットを新しい順にソートして表示します。この dcmd は、::kmalog より簡単な表形式で出力します。

[ address ] ::kmem_verify

指定されたアドレスに格納されている kmem_cache 構造体、またはアクティブ kmem_cache 構造体の完全なセットの完全性を検証します。明示的にキャッシュアドレスが指定されている場合、この dcmd はエラーに関するより冗長な情報を表示します。明示的に指定されていない場合は、要約レポートを表示します。::kmem_verify dcmd については、「カーネルメモリーキャッシュ」で詳しく説明します。

[ address ] ::vmem

指定されたアドレスに格納されている vmem 構造体、またはアクティブ vmem 構造体の完全なセットをフォーマットし、表示します。この構造体は、<sys/vmem_impl.h> で定義されます。

address ::vmem_seg

指定されたアドレスに格納されている vmem_seg 構造体をフォーマットし、表示します。この構造体は、<sys/vmem_impl.h> で定義されます。

address ::whatis [- abv]

指定されたアドレスに関する情報をレポートします。特に、::whatis は、そのアドレスが kmem によって管理されているバッファーへのポインタまたはスレッドスタックのような別のタイプの特殊メモリー領域へのポインタかどうかを判断し、検出結果をレポートします。-a オプションを指定すると、dcmd は照会に最初に一致するものだけでなく、すべての一致をレポートします。-b オプションを指定すると、dcmd はそのアドレスが既知の kmem bufctl によって参照されているかどうかも判断します。-v オプションを指定すると、この dcmd は、種々のカーネルデータ構造体を検索する際に進行状況をレポートします。