mdb(1) は Solaris 8 リリースから提供されているモジューラデバッガです。このデバッガは、拡張が容易であるという点で現在の Solaris デバッガの中でも独特のものです。このデバッガのプログラミング API を使用して、モジュールをコンパイルすることによって、デバッガのコンテキスト内で希望する処理を実行することができます。
さらに、mdb には、コマンド行での編集、コマンド履歴、組み込み出力ページャ、構文チェック、コマンドパイプラインなどの、いくつかの便利な機能があります。カーネルに対する事後検査用のデバッガとしては、このデバッガをお勧めします。
整数変数 maxusers の値を 5 から 6 に変更するには、次のようにします。
# mdb -kw Loading modules: [ unix krtld genunix ip logindmux ptm nfs ipc lofs ] > maxusers/D maxusers: maxusers: 495 > maxusers/W 200 maxusers: 0x1ef = 0x200 > $q |
実際に変更する場合は、maxusers を変更したい変数のアドレスに、値を設定したい値に置き換えて、このコマンドを実行します。
モジューラデバッガの使用方法についての詳細は 『Solaris モジューラデバッガ』を参照してください。
kadb や、mdb では、モジュール名接頭辞を指定する必要はありません。モジュールがロードされると、そのモジュールのシンボルは、コアカーネルのシンボルやすでにロードされているその他のモジュールのシンボルとの共通の名前空間を形成するからです。
たとえば、UFS モジュールがロードされると想定した場合、ufs:ufs_WRITES は、個々のデバッガでは ufs_WRITES としてアクセスされます。しかし、/etc/system ファイルに設定する場合は、ufs: 接頭辞が必要です。 kadb にモジュール名接頭辞を含めると、未定義のシンボルメッセージが表示されます。