Solaris モジューラデバッガ

第 5 章 カーネルデバッギングモジュール

この章では、Solaris カーネルをデバッグするために提供されているデバッガモジュール、dcmd、および walker について説明します。各カーネルデバッガモジュールは、対応する Solaris カーネルモジュールの後に指定されます。したがって、MDB によって自動的に読み込まれます。ここで説明する機能は、Solaris カーネルの現在の実装を反映したものであり、将来変更される場合があります。したがって、これらのコマンドの出力に依存するシェルスクリプトを作成することはお勧めできません。一般的に、この章で説明するカーネルデバッギング機能は、対応するカーネルサブシステム実装のコンテキストだけで意味を持ちます。Solaris カーネルの実装の詳細を説明したリファレンスのリストについては、「関連マニュアルと論文」を参照してください。


注 -

このマニュアルは、Solaris 8 オペレーティング環境での実装を説明しています。つまり、これらのモジュール、dcmd、および walker は、現在のカーネルの実装を反映しているので、過去または将来のリリースに対しては関連せず、適切でない、あるいは適用できない場合があります。これらはどんな種類の恒久的な公開インタフェースを定義するものでもありません。モジュール、dcmd、walker、およびそれらの出力形式および引数に関して提供されている情報は、Solaris オペレーティング環境の将来のリリースでは変更される場合があります。


一般的なカーネルデバッギングサポート (genunix)

カーネルメモリーアロケータ

この節では、Solaris カーネルメモリーアロケータによって識別される問題のデバッグ、およびメモリーとメモリー使用率の検査に使用される dcmd と walker について説明します。ここで説明する dcmd と walker については、第 6 章「カーネルメモリーアロケータを使用するデバッギング」でさらに詳細に説明します。

dcmd

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 は、種々のカーネルデータ構造体を検索する際に進行状況をレポートします。

walker

allocdby

開始点として kthread_t 構造体のアドレスを指定して、このカーネルスレッドによって行われたメモリー割り当てに対応する bufctl 構造体のセットに対して繰り返します。

bufctl

開始点として kmem_cache_t 構造体のアドレスを指定して、このキャッシュに関連して割り当てられた bufctl のセットに対して繰り返します。

freectl

開始点として kmem_cache_t 構造体のアドレスを指定して、このキャッシュに関連する未使用 bufctl のセットに対して繰り返します。

freedby

開始点として kthread_t 構造体のアドレスを指定して、このカーネルスレッドによって行われたメモリー割り当て解除に対応する bufctl 構造体のセットに対して繰り返します。

freemem

開始点として kmem_cache_t 構造体のアドレスを指定して、このキャッシュに関連する未使用バッファのセットに対して繰り返します。

kmem

開始点として kmem_cache_t 構造体のアドレスを指定して、このキャッシュに関連して割り当てられたバッファのセットに対して繰り返します。

kmem_cache

kmem_cache_t 構造体のアクティブセットに対して繰り返します。この構造体は、<sys/kmem_impl.h> で定義されます。

kmem_cpu_cache

開始点として kmem_cache_t 構造体のアドレスを指定して、このキャッシュに関連する CPU ごとの kmem_cpu_cache_t 構造体に対して繰り返します。この構造体は、<sys/kmem_impl.h> で定義されます。

kmem_slab

開始点として kmem_cache_t 構造体のアドレスを指定して、関連する kmem_slab_t 構造体のセットに対して繰り返します。この構造体は、<sys/kmem_impl.h> で定義されます。

kmem_log

kmem アロケータトランザクションログに格納されている bufctl のセットに対して繰り返します。

ファイルシステム

MDBファイルシステムのデバッギングサポートには、vnode ポインタを対応するファイルシステムのパス名に変換する組み込み機能が含まれています。この変換は、Directory Name Lookup Cache (DNLC) を使用して行われます。その理由は、キャッシュはすべてのアクティブ vnode を保持しているわけではないので、一部の vnode はパス名に変換することができず、名前の代わりに "??" が表示されるからです。

dcmd

::fsinfo

マウントされているファイルシステムのテーブルを表示します。これには、vfs_t アドレス、ops ベクトル、および各ファイルシステムのマウントポイントが含まれます。

::lminfo

ロックマネージャによって登録されたアクティブネットワークロックを持つ vnodes のテーブルを表示します。各 vnode に対応するパス名が示されます。

address ::vnode2path [-v]

指定された vnode アドレスに対応するパス名を表示します。-v オプションを指定すると、この dcmd はより詳細な表示を出力します。これには、各中間パスコンポーネントの vnode ポインタが含まれます。

walker

buf

アクティブブロック I/O 転送構造体 (buf_t 構造体) のセットに対して繰り返します。buf 構造体は、<sys/buf.h> で定義されます。詳細については、buf(9S) のマニュアルページを参照してください。

仮想記憶

この節では、カーネル仮想記憶サブシステムのデバッギングサポートについて説明します。

dcmd

address ::addr2smap [offset]

カーネルの segmap アドレス空間セグメント内の指定されたアドレスに対応する smap 構造体アドレスを出力します。

as ::as2proc

as_t アドレス as に対応するプロセスの proc_t アドレスを表示します。

seg ::seg

指定されたアドレス空間セグメント (seg_t アドレス) をフォーマットし、表示します。

vnode ::vnode2smap [offset]

指定された vnode_t アドレスおよびオフセットに対応する smap 構造体アドレスを出力します。

walker

anon

開始点として anon_map 構造体のアドレスを指定して、関連する anon 構造体のセットに対して繰り返します。anon マップ実装は、<vm/anon.h> で定義されます。

seg

開始点として as_t 構造体のアドレスを指定して、指定されたアドレス空間に関連するアドレス空間セグメント (seg 構造体) のセットに対して繰り返します。seg 構造体は、<vm/seg.h> で定義されます。

CPU とディスパッチャ

この節では、CPU 構造体とカーネルディスパッチャの状態を調べる機能について説明します。

dcmd

::callout

コールアウトテーブルを表示します。各コールアウトの関数、引数、有効期限が表示されます。

::class

スケジューリングクラステーブルを表示します。

[ cpuid ] ::cpuinfo [-v]

各 CPU 上で現在実行されているスレッドのテーブルを表示します。dcmd 名の前にオプションの CPU ID 番号を指定すると、指定された CPU に関する情報だけが表示されます。-v オプションを指定すると、::cpuinfo は、各 CPU 上で実行されるまで待機している実行可能スレッドとアクティブ割り込みスレッドも表示します。

walker

cpu

カーネル CPU 構造体のセットに対して繰り返します。cpu_t 構造体は、<sys/cpuvar.h> で定義されます。

デバイスドライバと DDI フレームワーク

この節では、カーネル開発者やサードパーティのデバイスドライバ開発者にとって有用な dcmd と walker について説明します。

dcmd

::devbindings device-name

名前を指定されたドライバについてすべてのインスタンスのリストを表示します。出力は、インスタンスごとに 1 つのエントリからなり、先頭が dev_info 構造へのポインタ ($<devinfo または ::devinfo で表示可能)、続いてドライバ名、インスタンス番号、そのインスタンスに関連付けられたドライバプロパティおよびシステムプロパティが表示されます。

address ::devinfo [ -q ]

devinfo ノードに関連付けられたシステムプロパティおよびドライバプロパティを出力します。-q オプションを指定すると、そのデバイスノードのクイックサマリだけを表示します。

[ address ] ::devnames [ -v ]

カーネルの devnames テーブルと dn_head ポインタを表示します。このポインタは、ドライバインスタンスリストを指しています。-v フラグを指定すると、devnames テーブルの各エントリに格納されている追加情報が表示されます。

[ devinfo ] ::prtconf [ -cpv ]

devinfo で指定されたデバイスノードからカーネルデバイスツリーを表示します。devinfo を指定しないと、デフォルトでルートからデバイスツリーが表示されます。-c オプションを指定すると、指定されたデバイスノードの子だけが表示されます。-p オプションを指定すると、指定されたデバイスノードの祖先だけが表示されます。-v オプションを指定すると、各ノードに関連付けられたプロパティが表示されます。

[ major-num ] ::major2name [ major-num ]

指定されたメジャー番号に該当するドライバ名を表示します。メジャー番号は、dcmd の前に式の形で、またはコマンド行引数として指定できます。

[ address ] ::modctl2devinfo

指定された modctl アドレスに対応するすべてのデバイスノードを出力します。

::name2major driver-name

デバイスドライバ名を指定すると、そのメジャー番号を表示します。

[ address ] ::softstate [ instance-number ]

softstate 状態ポインタ (ddi_soft_state_init(9F) のマニュアルページを参照) とデバイスインスタンス番号を指定すると、そのインスタンスのソフトの状態を表示します。

walker

devinfo

最初に、指定された devinfo の親に対して繰り返し、それらを最下位から世代順に返します。次に、指定された devinfo 自体を返します。その次に、指定された devinfo の子に対して、世代順に最上位から最下位まで繰り返します。dev_info 構造体は、<sys/ddi_impldefs.h> で定義されます。

devinfo_children

最初に、指定された devinfo を返し、次に、指定された devinfo の子に対して、世代順に最上位から最下位まで繰り返します。dev_info 構造体は、<sys/ddi_impldefs.h> で定義されます。

devinfo_parents

指定された devinfo の親に対して、世代順に最上位から最下位まで繰り返し、次に、指定された devinfo を返します。dev_info 構造体は、<sys/ddi_impldefs.h> で定義されます。

devi_next

指定された devinfo の兄弟ウィジェットに対して繰り返します。dev_info 構造体は、<sys/ddi_impldefs.h> で定義されます。

devnames

devnames 配列のエントリに対して繰り返します。この構造体は、<sys/autoconf.h> で定義されます。

STREAMS

この節では、カーネル開発者やサードパーティの STREAMS モジュールやドライバの開発者にとって有用な dcmd と walker について説明します。

dcmd

address ::queue [-v] [-f flag] [-F flag] [-m modname]

指定された queue_t データ構造体をフィルタリングし表示します。オプションを指定しないと、queue_t の種々のプロパティが表示されます。-v オプションを指定すると、待ち行列フラグが詳細に復号化されます。-f-F、または -m オプションを指定すると、これらのオプションの引数によって定義される条件に一致した場合にだけ、待ち行列が表示されます。したがって、この dcmd をパイプラインからの入力のフィルタとして使用できます。-f オプションは、指定したフラグ (<sys/stream.h> の Q フラグ名の 1 つ) が待ち行列フラグの中に存在しなければならないことを指示します。-F オプションは、指定したフラグが待ち行列フラグの中に存在してはならないことを指示します。-m オプションは、待ち行列に関連付けられたモジュール名が指定された modname に一致しなければならないことを指示します。

address ::q2syncq

queue_t のアドレスを指定して、対応する syncq_t データ構造体のアドレスを出力します。

address ::q2otherq

queue_t のアドレスを指定して、ピアな読み取りまたは書き込み待ち行列構造体のアドレスを出力します。

address ::q2rdq

queue_t のアドレスを指定して、対応する読み取り待ち行列のアドレスを出力します。

address ::q2wrq

queue_t のアドレスを指定して、対応する書き込み待ち行列のアドレスを出力します。

[ address ] ::stream

STREAM ヘッドを表す stdata_t 構造体のアドレスを指定して、カーネル STREAM データ構造体の画像を表示します。読み取りおよび書き込み待ち行列ポインタ、バイト数、各モジュールのフラグが示され、さらに、余白に指定された待ち行列に関する追加情報が示される場合もあります。

address ::syncq [-v] [-f flag] [-F flag] [-t type] [-T type]

指定された syncq_t データ構造体をフィルタリングし表示します。オプションを指定しないと、syncq_t の種々のプロパティが表示されます。-v オプションを指定すると、syncq フラグが詳細に復号化されます。-f-F-t、または -T オプションを指定すると、これらのオプションの引数によって定義される条件に一致する場合にだけ、syncq が表示されます。したがって、この dcmd をパイプラインの入力のフィルタとして使用できます。-f オプションは、指定したフラグ (<sys/strsubr.h>SQ_ フラグ名の 1 つ) が syncq フラグの中に存在しなければならないことを指示します。-F オプションは、指定したフラグが syncq フラグの中に存在してはならないことを指示します。-t オプションは、指定したタイプ (<sys/strsubr.h>SQ_CI または SQ_CO タイプ名の 1 つ) が syncq タイプビットの中に存在しなければならないことを指示します。-T オプションは、指定したタイプが syncq タイプビットの中に存在してはならないことを指示します。

address ::syncq2q

syncq_t のアドレスを指定して、対応する queue_t データ構造体のアドレスを出力します。

walker

qlink

queue_t 構造体のアドレスを指定して、q_link ポインタを使用して関連する待ち行列のリストを調べます。この構造体は、<sys/stream.h> で定義されます。

qnext

queue_t 構造体のアドレスを指定して、q_next ポインタを使用して関連する待ち行列のリストを調べます。この構造体は、<sys/stream.h> で定義されます。

readq

stdata_t 構造体のアドレスを指定して、読み取り側待ち行列構造体のリストを調べます。

writeq

stdata_t 構造体のアドレスを指定して、書き込み側待ち行列構造体のリストを調べます。

ファイル、プロセス、およびスレッド

この節では、Solaris カーネルの種々の基本的ファイル、プロセス、およびスレッド構造体をフォーマットし調べるために使用される dcmd と walker について説明します。

dcmd

process ::fd fd-num

指定されたプロセスに関連付けられたファイル記述子 fd-num に対応する file_t アドレスを出力します。このプロセスは、proc_t 構造体の仮想アドレスによって指定されます。

thread ::findstack [ command ]

指定されたカーネルスレッドに関連付けられたスタックトレースを出力します。このスレッドは、kthread_t 構造体の仮想アドレスによって識別されます。この dcmd は、複数の異なるアルゴリズムを使用して該当するスタックバックトレースを見つけます。オプションのコマンド文字列を指定すると、ドット変数はスタックフレームの最先頭のフレームポインタアドレスにリセットされ、指定されたコマンドはコマンド行に入力された場合と同じように評価されます。デフォルトのコマンド文字列は、"<.$C0" です。すなわち、フレームポインタを含め、引数を付けずにスタックトレースを出力します。

pid ::pid2proc

指定されたプロセス ID に対応する proc_t アドレスを出力します。MDB のデフォルトは 16 進数であることを思い出してください。したがって、pgrep(1) または ps(1) を使用して取得した 10 進数のプロセス ID には接頭辞 0t を付ける必要があります。

process ::pmap

指定されたプロセスアドレスが指示するプロセスのメモリーマップを出力します。この dcmd は、pmap(1) に似た書式を使用して出力を表示します。

[ process ] ::ps [-flt]

指定されたプロセスまたはすべてのアクティブシステムプロセスに関連する情報の要約を出力します。ps(1) に似ています。-f オプションを指定すると、完全なコマンド名と初期引数が出力されます。-l オプションを指定すると、各プロセスに関連付けられた LWP が出力されます。-t オプションを指定すると、各プロセス LWP に関連付けられたカーネルスレッドが出力されます。

::ptree

それぞれの親プロセスから派生した子プロセスを含むプロセスツリーを出力します。この dcmd は、ptree(1) に似た書式を使用して出力を表示します。

vnode ::whereopen

vnode_t アドレスを指定して、現在ファイルテーブルの中で開かれている、この vnode を持つすべてのプロセスの proc_t アドレスを出力します。

walker

file

開始点としてproc_t 構造体のアドレスを指定して、指定されたプロセスに関連付けられた開かれているファイル (file_t 構造体) のセットに対して繰り返します。file_t 構造体は、<sys/file.h> で定義されます。

proc

アクティブプロセス (proc_t) 構造体に対して繰り返します。この構造体は、<sys/proc.h> で定義されます。

thread

カーネルスレッド (kthread_t) 構造体のセットに対して繰り返します。グローバル walk が起動されると、すべてのカーネルスレッドがこの walker によって返されます。開始点として proc_t アドレスを使用してローカル walk が起動されると、指定されたプロセスに関連付けられたスレッドのセットが返されます。kthread_t 構造体は、<sys/thread.h> で定義されます。

同期プリミティブ

この節では、特定のカーネル同期プリミティブを調べるために使用される dcmd と walker について説明します。各プリミティブの意味については、『man pages section 9F: DDI and DKI Kernel Functions』を参照してください。

dcmd

rwlock ::rwlock

読み取り書き込みロック (rwlock(9F) のマニュアルページを参照) のアドレスを指定して、現在のロックの状態と待機しているスレッドのリストを表示します。

[ address ] ::wchaninfo [-v]

条件変数 (condvar(9F) のマニュアルページを参照) またはセマフォ (semaphore(9F) のマニュアルページを参照) のアドレスを指定して、このオブジェクトでの現在の待機数を表示します。明示的にアドレスを指定しないと、待機しているスレッドがあるすべてのオブジェクトが表示されます。-v オプションを指定すると、オブジェクトで現在ブロックされているスレッドのリストが表示されます。

walker

blocked

同期オブジェクト (たとえば、mutex(9F)rwlock(9F)) のアドレスを指定して、ブロックされているカーネルスレッドのリストに対して繰り返します。

wchan

条件変数 (condvar(9F) のマニュアルページを参照) またはセマフォ (semaphore(9F) のマニュアルページを参照) のアドレスを指定して、ブロックされているカーネルスレッドのリストに対して繰り返します。

cyclic

cyclic サブシステムは下位レベルのカーネルサブシステムで、高解像度、他のカーネルサービスに対する各 CPU インターバルタイマー機能、およびプログラミングインタフェースを提供します。

dcmd

::cycinfo [-vV]

CPU ごとに cyclic サブシステムの各 CPU の状態を表示します。-v オプションを指定すると、より詳細な表示が示されます。-V オプションを指定すると、-v よりもさらに詳細な表示が示されます。

address ::cyclic

指定されたアドレスの cyclic_t をフォーマットし、表示します。

::cyccover

cyclic サブシステムのコードカバレージ情報を表示します。この情報は、DEBUG カーネルだけで使用可能です。

::cyctrace

cyclic サブシステムのトレース情報を表示します。この情報は、DEBUG カーネルだけで使用可能です。

walker

cyccpu

各 CPU の cyc_cpu_t 構造体に対して繰り返します。この構造体は、<sys/cyclic_impl.h> で定義されます。

cyctrace

cyclic トレースバッファ構造体に対して繰り返します。この情報は、DEBUG カーネルだけで使用可能です。

プロセス間通信のデバッギングサポート (ipc)

ipc モジュールは、メッセージ待ち行列、セマフォ、および共用メモリープロセス間通信プリミティブの実装に対してデバッギングサポートを提供します。

dcmd

::ipcs [-l]

既知のメッセージ待ち行列、セマフォ、および共用メモリーセグメントに対応するシステム全体の IPC 識別子のリストを表示します。-l オプションを指定すると、より詳細な情報のリストが示されます。

[ address ] ::msqid_ds [-l]

指定された msqid_ds 構造体またはアクティブな msqid_ds 構造体 (メッセージ待ち行列識別子) のテーブルを出力します。-l オプションを指定すると、情報のより長いリストが表示されます。

[ address ] ::semid_ds [-l]

指定された semid_ds 構造体またはアクティブな semid_ds 構造体 (セマフォ識別子) のテーブルを出力します。-l オプションを指定すると、より詳細な情報のリストが表示されます。

[ address ] ::shmid_ds [-l]

指定された shmid_ds 構造体またはアクティブな shmid_ds 構造体 (共用メモリーセグメント識別子) のテーブルを出力します。-l オプションを指定すると、より詳細な情報のリストが表示されます。

walker

msg

メッセージ待ち行列識別子に対応するアクティブな msqid_ds 構造体を調べます。この構造体は、<sys/msg.h> で定義されます。

sem

セマフォ識別子に対応するアクティブな semid_ds 構造体を調べます。この構造体は、<sys/sem.h> で定義されます。

shm

共用メモリーセグメント識別子に対応するアクティブな shmid_ds 構造体を調べます。この構造体は、<sys/shm.h> で定義されます。

ループバックファイルシステムのデバッギングサポート (lofs)

lofs モジュールは、lofs(7FS) ファイルシステムのデバッギングサポートを提供します。

dcmd

[ address ] ::lnode

指定された lnode_t、またはカーネルのアクティブな lnode_t 構造体のテーブルを出力します。

address ::lnode2dev

指定された lnode_t アドレスに対応する配下のループバックマウントファイルシステムの dev_t (vfs_dev) を出力します。

address ::lnode2rdev

指定された lnode_t アドレスに対応する配下のループバックマウントファイルシステムの dev_t (li_rdev) を出力します。

walker

lnode

カーネルのアクティブな lnode_t 構造体を調べます。この構造体は、<sys/fs/lofs_node.h> で定義されます。

インターネットプロトコルモジュールのデバッギングサポート (ip)

ip モジュールは、ip(7P) ドライバのデバッギングサポートを提供します。

dcmd

[ address ] ::ire [-q]

指定された ire_t、またはカーネルのアクティブな ire_t 構造体のテーブルを出力します。-q フラグを指定すると、発信元および宛先アドレスではなく、送信および受信待ち行列ポインタが出力されます。

walker

ire

カーネルのアクティブな ire (Internet Route Entry) 構造体を調べます。この構造体は、<inet/ip.h> で定義されます。

カーネル実行時リンカーのデバッギングサポート (krtld)

この節では、カーネルモジュールとドライバの読み込みを担当するカーネル実行時リンカーのデバッギングサポートについて説明します。

dcmd

[ address ] ::modctl

指定された modctl、またはカーネルのアクティブな modctl 構造体のテーブルを出力します。

address ::modhdrs

modctl 構造体のアドレスを指定して、モジュールの ELF 実行可能ヘッダーとセクションヘッダーを出力します。

::modinfo

アクティブカーネルモジュールに関する情報を出力します。/usr/sbin/modinfo コマンドの出力に似ています。

walker

modctl

カーネルのアクティブな modctl 構造体のリストを調べます。この構造体は、<sys/modctl.h> で定義されます。

IA: プラットフォームのデバッギングサポート (unix)

これらの dcmd と walker は、IA 用です。

dcmd

[ cpuid | address ] ::ttrace [-x]

トラップトレースレコードを新しい順に表示します。トラップトレース機能は、DEBUG カーネルだけで使用可能です。明示的にドット値を指定すると、その正確な値に応じてこれが CPU ID 番号またはトラップトレースレコードアドレスとして解釈されます。CPU ID 番号を指定すると、出力はその CPU のバッファに制限されます。レコードアドレスを指定すると、そのレコードだけがフォーマットされます。-x オプションを指定すると、完全な raw レコードが表示されます。

walker

ttrace

トラップトレースレコードアドレスのリストを新しい順に調べます。トラップトレース機能は、DEBUG カーネルだけで使用可能です。

SPARC: sun4d プラットフォームのデバッギングサポート (unix)

これらの dcmd と walker は、SPARC sun4d プラットフォーム用です。

dcmd

[ cpuid | address ] ::ttrace [-x]

トラップトレースレコードを新しい順に表示します。トラップトレース機能は、DEBUG カーネルだけで使用可能です。明示的にドット値を指定すると、その正確な値に応じてこれが CPU ID 番号またはトラップトレースレコードアドレスとして解釈されます。CPU ID 番号を指定すると、出力はその CPU のバッファに制限されます。レコードアドレスを指定すると、そのレコードだけがフォーマットされます。-x オプションを指定すると、完全な raw レコードが表示されます。

walker

ttrace

トラップトレースレコードアドレスのリストを新しい順に調べます。トラップトレース機能は、DEBUG カーネルだけで使用可能です。

SPARC: sun4m プラットフォームのデバッギングサポート (unix)

これらの dcmd と walker は、SPARC sun4m プラットフォーム用です。

dcmd

[ cpuid | address ] ::ttrace [-x]

トラップトレースレコードを新しい順に表示します。トラップトレース機能は、DEBUG カーネルだけで使用可能です。明示的にドット値を指定すると、その正確な値に応じてこれが CPU ID 番号またはトラップトレースレコードアドレスとして解釈されます。CPU ID 番号を指定すると、出力はその CPU のバッファに制限されます。レコードアドレスを指定すると、そのレコードだけがフォーマットされます。-x オプションを指定すると、完全な raw レコードが表示されます。

walker

ttrace

トラップトレースレコードアドレスのリストを新しい順に調べます。トラップトレース機能は、DEBUG カーネルだけで使用可能です。

SPARC: sun4u プラットフォームのデバッギングサポート (unix)

これらの dcmd と walker は、SPARC sun4u プラットフォーム用です。

dcmd

[ address ] ::softint

指定されたアドレスのソフト割り込みベクトル構造体を表示するか、またはすべてのアクティブなソフト割り込みベクトルを表示します。各構造体の保留数、PIL、引数、およびハンドラ関数が表示されます。

::ttctl

トラップトレース制御レコードを表示します。トラップトレース機能は、DEBUG カーネルだけで使用可能です。

[ cpuid ] ::ttrace [-x]

トラップトレースレコードを新しい順に表示します。トラップトレース機能は、DEBUG カーネルだけで使用可能です。明示的にドット値を指定すると、CPU ID として解釈され、出力はその CPU のバッファに制限されます。-x オプションを指定すると、完全な raw レコードが表示されます。

[ address ] ::xc_mbox

指定されたアドレスのクロスコールメールボックスを表示するか、または保留中の要求を持っているすべてのクロスコールメールボックスをフォーマットします。

::xctrace

CPU クロスコールアクティビティに関連するトラップトレースレコードを新しい順にフォーマットし、表示します。トラップトレース機能は、DEBUG カーネルだけで使用可能です。

walker

softint

ソフト割り込みベクトルテーブルエントリに対して繰り返します。

ttrace

トラップトレースレコードアドレスに対して新しい順に繰り返します。トラップトレース機能は、DEBUG カーネルだけで使用可能です。

xc_mbox

CPU ハンドシェイクとクロスコール (x-call) 要求に使用されるメールボックスに対して繰り返します。