Solaris モジューラデバッガ

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

この節では、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> で定義されます。