Solaris モジューラデバッガ

ブート、読み込み、読み込み解除

カーネルの起動を簡単にデバッグできるように、ブートプロセスの初期段階で、制御がカーネル実行時リンカー (krtld) からカーネルに渡る前に kmdb を読み込むことができます。 kmdb は、-k ブートフラグ、kmdb ブートファイル、または kadb ブートファイル (互換性のため) を使ってブート時に読み込むことができます。kmdb がブート時に読み込まれると、システムがそのあとリブートされるまで、デバッガを読み込み解除することはできません。ブートの初期段階では、すぐに利用できない機能がいくつかあります。特に、デバッグ用のモジュールは、カーネルモジュールサブシステムが初期化されるまで読み込まれません。プロセッサに固有の機能は、カーネルがプロセッサ識別処理を完了するまで有効になりません。

-k オプションを使ってシステムをブートすると、ブートプロセス時に kmdb が自動的に読み込まれます。-d ブートオプションを使用すると、カーネルを開始する前にデバッガのブレークポイントを要求できます。この機能は、ほかのカーネルと同様にデフォルトのカーネルでも有効です。たとえば、kmdb を使って SPARC システムをブートし、デバッガに即時エントリを要求するには、次のいずれかのコマンドを入力します。


ok boot -kd
ok boot kmdb -d
ok boot kadb -d

同じ方法で x86 システムをブートするには、次のいずれかのコマンドを入力します。


Select (b)oot or (i)nterpreter:

b -kd
Select (b)oot or (i)nterpreter:

b kmdb -d
Select (b)oot or (i)nterpreter:

b kadb -d	

kmdb を使って SPARC システムをブートし、64 ビットの代替カーネルを読み込むには、次のコマンドを入力します。


ok boot kernel.

test/sparcv9/unix -k

kmdb を使って x86 システムをブートし、64 ビットの代替カーネルを読み込むには、次のコマンドを入力します。


Select (b)oot or (i)nterpreter:

b kernel.

test/amd64/unix -k

ブートファイルが文字列 kmdb または kadb に設定され、代替カーネルをブートする場合は、-D オプションを使用してブートするカーネルの名前を指定します。この方法で SPARC システムをブートするには、次のコマンドを入力します。


ok boot kmdb -D kernel.

test/sparcv9/unix

この方法で 32 ビットの x86 システムをブートするには、次のコマンドを入力します。


Select (b) or (i)nterpreter:

b kmdb -D kernel.

test/unix

この方法で 64 ビットの x86 システムをブートするには、次のコマンドを入力します。


Select (b) or (i)nterpreter:

b kmdb -D kernel.

test/amd64/unix

すでにブートされているシステムをデバッグするには、mdb -K オプションを使用して kmdb を読み込み、カーネルの実行を停止します。この方法でデバッガが読み込まれると、あとで読み込み解除できます。デバッグが完了して kmdb を読み込み解除するには、::quit dcmd に -u オプションを指定します。あるいは、コマンド mdb -U を使用してオペレーティングシステムの実行を再開します。