Solaris モジューラデバッガ

コマンド行オプションの概要

次のオプションがサポートされています。

-A

mdb モジュールの自動読み込みを無効にします。デフォルトでは、mdb は、ユーザープロセスまたはコアファイルのアクティブな共用ライブラリに対応しているデバッガモジュール、または稼動中のオペレーティングシステムかオペレーティングシステムのクラッシュダンプにある読み込み済みのカーネルモジュールに対応しているデバッガモジュールを読み込もうとします。

-F

必要に応じて、指定されたユーザープロセスに強制的に接続します。デフォルトでは、mdb は、すでに truss(1) など別のデバッグ用ツールの制御下にあるユーザープロセスへの接続を拒否します。-F オプションを指定すると、mdb はこれらのプロセスに接続します。こうすることで、mdb とプロセスを制御しようとしている他のツールとの間で本来は行われない対話処理が行われます。

-I

マクロファイルを検出するためのデフォルトのパスを設定します。マクロファイルは、$< または $<< dcmd を使用して読み取ります。このときのパスは、一連のディレクトリ名をコロン (:) 文字で区切ったものです。-I include パスと -L library パス (以降を参照) には、次のトークンを含めることができます。

%i

現在の命令セットアーキテクチャ (ISA) の名前 ('sparc'、'sparcv9'、または 'i386' ) まで拡大します。

%o

変更対象のパスの古い値まで拡大します。これは、既存のパスの前または後ろにディレクトリを追加するときに有用です。

%p

現在のプラットフォーム文字列 (uname -i またはプロセスのコアファイルあるいはクラッシュダンプに格納されているプラットフォーム文字列) まで拡大します。

%r

ルートディレクトリのパス名まで拡大します。-R オプションを使用すると、代替ルートディレクトリを指定できます。-R オプションを指定しないと、ルートディレクトリは mdb 実行可能ファイル自体へのパスから動的に決定されます。たとえば、/bin/mdb を実行した場合、ルートディレクトリは / です。/net/hostname/bin/mdb を実行した場合、ルートディレクトリは /net/hostname となります。

%t

現在のターゲット名まで拡大します。これはリテラル文字列 'proc' (ユーザープロセスまたはユーザープロセスのコアファイル)、あるいは 'kvm' (カーネルクラッシュダンプまたは稼動中のオペレーティングシステム) のどちらかです。

32 ビットの mdb に対するデフォルトのインクルードパスは、次のとおりです。


%r/usr/platform/%p/lib/adb:%r/usr/lib/adb

64 ビットの mdb に対するデフォルトのインクルードパスは、次のとおりです。


%r/usr/platform/%p/lib/adb/%i:%r/usr/lib/adb/%i

-k

強制的にカーネルデバッギングモードにします。デフォルトでは、mdb は、オブジェクトとコアファイルのオペランドがユーザーの実行可能ファイルとコアダンプを参照しているのか、または 1 組のオペレーティングシステムのクラッシュダンプファイルを参照しているのかを判断しようとします。-k オプションを指定すると、mdb は、これらのファイルがオペレーティングシステムのクラッシュダンプファイルであるとみなします。オブジェクトまたはコアオペランドを指定せずに -k オプションを指定すると、mdb は、オブジェクトファイルを /dev/ksyms に、コアファイルを /dev/kmem にデフォルト設定します。/dev/kmem にアクセスできるのはグループ sys だけです。

-L

デバッガモジュールを検索するためのデフォルトのパスを設定します。モジュールは起動時に自動的に読み込まれるか、または ::load dcmd を使用して読み込まれます。このときのパスは一連のディレクトリ名をコロン (:) 文字で区切ったものです。-L ライブラリパスには、上記の -I オプションで示したトークンも含めることができます。

-m

カーネルモジュールシンボルのデマンドローディングを無効にします。デフォルトでは、mdb は読み込まれたカーネルモジュールのリストを処理し、モジュールごとにシンボルテーブルのデマンドローディングを実行します。-m オプションを指定すると、mdb はカーネルモジュールのリストを処理したり、モジュールごとにシンボルテーブルを提供したりしなくなります。したがって、アクティブなカーネルモジュールに対応する mdb モジュールは起動時に読み込まれません。

-M

すべてのカーネルモジュールシンボルを事前に読み込みます。デフォルトでは、mdb はカーネルモジュールシンボルのデマンドローディングを実行します。アドレスがそのモジュールのテキストであるとき、またはデータセクションが参照されているとき、モジュールのシンボルテーブルが完全に読み取られます。-M オプションを指定すると、mdb は起動時にすべてのカーネルモジュールのシンボルテーブルを完全に読み込みます。

-o option

指定したデバッガオプションを有効にします。+o 形式のオプションを使用した場合は、指定したオプションが無効になります。以下に掲載しているものを除いて、各オプションともデフォルトでは無効になっています。mdb は次のオプション引数を認識します。

adb

ストリクタ adb(1) の互換性を有効にします。プロンプトは空の文字列に設定され、出力ページャなどの多数の mdb 機能が無効になります。

follow_child

fork(2) システムコールが発生すると、デバッガは子プロセスを追跡します。デフォルトでは、デバッガはオリジナルのターゲットプロセス (親プロセス) に接続されています。

ignoreeof

端末に EOF シーケンス (^D) が入力されても、デバッガは終了しません。終了するには ::quit dcmd を使用する必要があります。

pager

出力ページャが有効になります (デフォルト設定)。

repeatlast

NEWLINE がコマンドとして端末に入力された場合、mdb は前のコマンドを現在のドットの値で繰り返します。-o adb を指定した場合、このオプションも自動的に指定されています。

-p pid

指定されたプロセス ID に接続し、そのプロセスを停止します。mdb は、/proc/pid/object/a.out ファイルを実行可能ファイルのパス名として使用します。

-P

コマンドプロンプトを設定します。デフォルトのプロンプトは '> ' です。

-R

パス名を拡張するためのルートディレクトリを設定します。デフォルトでは、ルートディレクトリは mdb 実行可能ファイル自体のパス名から導かれます。ルートディレクトリは、パス名の拡大の際に %r トークンと置き換えられます。

-s distance

アドレスからシンボル名への変換用のシンボルマッチングディスタンスを、指定した distance に設定します。デフォルトでは、mdb はこの距離をゼロに設定し、スマートマッチングモードを有効にします。ELF シンボルテーブルのエントリには値 V とサイズ S が含まれ、関数またはデータオブジェクトのサイズがバイト単位で示されます。スマートモードでは、mdb は、A が [ V, V + S ) の範囲にある場合、アドレス A と与えられたシンボルとを一致させます。ゼロ以外の距離を指定した場合も同じアルゴリズムが使用されますが、式に S を指定した場合、常に絶対距離が指定され、シンボルのサイズは無視されます。

-S

ユーザーの ‾/.mdbrc ファイルの処理を抑制します。デフォルトでは、mdb は、$HOME で定義されているユーザーのホームディレクトリにマクロファイル .mdbrc があれば、それを読み取って処理します。-S オプションを指定すると、このファイルは読み取られません。

-u

強制的にユーザーデバッギングモードにします。デフォルトでは、mdb は、オブジェクトとコアファイルのオペランドがユーザーの実行可能ファイルとコアダンプを参照しているのか、または 1 組のオペレーティングシステムのクラッシュダンプファイルを参照しているのかを判断しようとします。-u オプションを使用すると、mdb は、これらのファイルがオペレーティングシステムのクラッシュダンプファイルではないとみなします。

-V

逆アセンブラのバージョンを設定します。デフォルトでは、mdb は、デバッグターゲットに対する適切な逆アセンブラのバージョンを判断しようとします。-V オプションを使用すると、逆アセンブラを明示的に設定できます。::disasms dcmd によって、使用可能な逆アセンブラのバージョンが一覧表示されます。

-w

指定したオブジェクトとコアファイルを書き込み用に開きます。

-y

tty モードに対する明示的な端末初期化シーケンスを送信します。cmdtool(1) など、端末によっては、tty モードに切り替えるのに明示的な初期化シーケンスが必要です。この初期化シーケンスがないと、mdb からスタンドアウトモードなどの端末機能を使用できない場合があります。