Solaris モジューラデバッガ

exec との対話

制御されているユーザープロセスが exec(2) を正常に実行するとき、デバッガの動作は ::set -o follow_exec_mode オプションで制御できます (「コマンド行オプションの概要」を参照)。デバッガと対象プロセスのデータモデルが同じ場合、exec の後で、MDB が自動的にターゲットを継続するか、デバッガのプロンプトに戻るかは、stop モードか follow モードかによって決定されます。デバッガと対象プロセスのデータモデルが異なる場合、follow モードでは、MDB は自動的に MDB バイナリを適切なデータモデルで再度 exec して、プロセスに接続し直すので、exec から戻っても、プロセスは停止したままになります。このような再実行後、すべてのデバッガの状態が保存されるわけではありません。

32 ビットの対象プロセスが 64 ビットのプログラムを実行した場合、stop モードでは、コマンドプロンプトに戻りますが、この時点で 64 ビットデータモデルを使用しているので、対象プロセスを検査できません。デバッグを再開するには、::release -a dcmd を実行して、MDB を終了し、そして、mdb -p pid を実行して、64 ビットデバッガを対象プロセスに接続し直します。

64 ビットの対象プロセスが 32 ビットのプログラムを実行した場合、stop モードでは、コマンドプロンプトに戻りますが、新しいプロセスを検査する機能はかなり制限されます。組み込み dcmd はすべてマニュアルどおりに機能しますが、読み込み可能な dcmd は構造体のデータモデル変換を実行しないので、マニュアルどおりには機能しません。デバッグ機能を完全に復元するには、上記のように、デバッガを解放し、プロセスに接続し直す必要があります。