Solaris モジューラデバッガ

付録 B 注意

警告

次の警告情報は MDB の使用に適用されます。

エラー回復メカニズムの使用

デバッガとその dmod は同じアドレス空間内で動作するので、dmod にバグがあると、MDB がコアをダンプしたり、誤動作したりする可能性があります。MDB の resume 機能 (シグナル処理を参照) はこのような状況に対して、制限付きで回復メカニズムを提供します。しかし、dmod 自身の状態やデバッガのグローバルな状態だけでは、MDB は 当該 dmod が壊れているかどうかを最終的には判断できません。したがって、resume 操作は安全であるとは保証されず、また、その後のデバッガのクラッシュを防ぐこともできません。resume によるもっとも安全な対処方法は、重要なデバッグ情報を保存し、デバッガを停止し再起動します。

動作中のオペレーティングシステムのデバッガによる修正

動作中のオペレーティングシステムのアドレス空間をデバッガを使用して修正する (書き込む) ことは非常に危険であり、ユーザーがカーネルデータの構造を破損するとシステムパニックが発生する可能性があります。

注意

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

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

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

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

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

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

開発者向けの情報

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