Solaris モジューラデバッガ

注意

プロセスコアファイルの調査に関する制限

MDB は、Solaris 2.6 より前の Solaris オペレーティングシステムのリリースで生成されたプロセスコアファイルの調査をサポートしません。あるオペレーティングシステムのリリースで生成されたコアファイルを別のオペレーティングシステムのリリースで調査する場合、実行時リンカーのデバッギングインタフェース (librtld_db) は初期化できない可能性があります。この場合、共用ライブラリのシンボル情報は利用できません。さらに、共用マッピングはユーザーのコアファイル内には存在しないので、共用ライブラリのテキストセクションと読み取り専用データは、コアがダンプされた時点にプロセス内に存在していたデータと一致しない可能性があります。x86 版の Solaris システムから生成されたコアファイルは SPARC 版の Solaris システムでは調査できず、その逆もできません。

クラッシュダンプファイルの調査に関する制限

Solaris 7 以前のリリースで生成されたクラッシュダンプを調査するには、対応するオペレーティングシステムのリリース用の libkvm が必要です。あるオペレーティングシステムのリリースで生成されたクラッシュダンプを別のオペレーティングシステムのリリースで dmod を使用して調査する場合、カーネルの実装によっては、いくつかの dcmd や walker が適切に動作しない可能性があります。この状況を検出すると、MDB は警告メッセージを発行します。x86 版の Solaris システムから生成されたクラッシュダンプは SPARC 版の Solaris システムでは調査できず、その逆もできません。

32 ビットと 64 ビットのデバッガ間の関係

MDB は 32 ビットと 64 ビットの両方のプログラムのデバッグをサポートします。ターゲットのプログラムを調査して、そのデータモデルを決定したあと、MDB は必要に応じて自動的に、ターゲットと同じデータモデルを持つ mdb バイナリを実行し直します。このアプローチによって、読み込まれたモジュールがプライマリターゲットと同じデータモデルを使用するので、 デバッガモジュールを作成する作業が簡単になります。64 ビットのターゲットプログラムをデバッグできるのは 64 ビットのデバッガだけです。64 ビットのデバッガを使用できるのは 64 ビットのオペレーティング環境が動作しているシステム上だけです。

kmdb に使用できるメモリーに関する制限

kmdb に使用できるメモリーは、デバッガが読み込まれるときに割り当てられますが、それ以降は拡張することができません。デバッガのコマンドで、使用可能な容量よりも多くのメモリーを割り当てようとすると、コマンドが実行できなくなります。デバッガは、メモリーが不足している状況からの正常な回復を試みますが、極度にメモリーが不足した環境のもとではシステムを強制終了せざるを得ない場合もあります。システムメモリーの制約は、特に 32 ビットのオペレーティングシステムカーネルを使用する x86 プラットフォームで厳しくなっています。

開発者向けの情報

mdb(1) のマニュアルページには、組み込み mdb 機能についての開発者向けの詳細な情報が記載されています。ヘッダーファイル <sys/mdb_modapi.h> には MDB モジュール API にある関数用のプロトタイプが入っており、SUNWmdbdm パッケージにはディレクトリ /usr/demo/mdb にあるサンプルモジュール用のソースコードが入っています。