dbx コマンドによるデバッグ

自動読み取り機能の使用

通常、デバッグしたいプログラムは全体を -g オプションを使用して、コンパイルする必要があります。プログラムのコンパイル方法によって、各プログラムおよび共有ライブラリモジュールについて生成されるデバッグ情報は、各プログラムおよび共有ライブラリモジュールのオブジェクトコードファイル (.o ファイル)、またはプログラム実行可能ファイルのいずれか、あるいはこの両方に保存されます。

-g -c コンパイラオプションによってコンパイルを行うと、各モジュールのデバッグ情報は、その .o ファイルに保存されます。dbx は、各モジュールのデバッグ情報を必要に応じて、セッション中に自動的に読み取ります。この必要に応じた読み取り機能は、自動読み取り機能と呼ばれます。自動読み取り機能は、dbx のデフォルト機能です。

自動読み取り機能によって、大きなプログラムを dbx に読み込むときに時間を大幅に節約することができます。自動読み取り機能は、プログラム .o ファイルが、dbx に認識された位置に続けて存在することによって機能しています。dbx の認識後に .o ファイルを移動しないで下さい。


注 -

.o ファイル を .a ファイルに保存してから、アーカイブライブラリを使用してリンクすると、関連の .o ファイルを削除することができますが、.a ファイルは削除できません。


デフォルトにより、dbx はプログラムのコンパイル時にそれらのファイルがあったディレクトリからファイルを検索し、リンク元の位置から .o ファイルを検索します。 ファイルがそこにない場合は、pathmap コマンドを使用して、検索パスを設定してください。

オブジェクトファイルが作成されない場合、デバッグ情報は、実行可能ファイルに保存されます。つまり、.o ファイルを作成しないコンパイルの場合、コンパイラはすべてのデバッグ情報を実行可能ファイルに保存します。保存されたデバッグ情報は、-xs オプションでコンパイルされたアプリケーションと同じ方法で読み取られます。「.o ファイルが存在しない場合のデバッグ」を参照してください。

.o ファイルが存在しない場合のデバッグ

-g -c オプションでコンパイルされたプログラムは、各モジュールのデバッグ情報を、そのモジュールの .o ファイルに保存します。自動読み取り機能を使用するには、プログラム .o ファイルと共有ライブラリの .o ファイルが続けて存在している必要があります。

デバッグしたいモジュールのプログラムの .o ファイルまたは共有ライブラリの .o ファイルの維持が不可能な場合は、コンパイラの -xs オプションを使用して ( -g オプションの後に付けます) プログラムをコンパイルします。-xs でコンパイルしたモジュールと、このオプションを使わずにコンパイルしたモジュールが混在してもかまいません。-xs オプションは、コンパイラのリンカーに、すべてのデバッグ情報を実行可能プログラムに配置するよう命令するオプションです。したがって、これらのモジュールをデバッグするのに、.o ファイルの存在は必要ありません。

dbx 4.0 では、-xs オプションでコンパイルされたモジュールのデバッグ情報は、dbx の起動時に読み込まれます。そのため、-xs でコンパイルされた大きなプログラムでは、dbx の起動に時間がかかることがあります。

dbx 5.0 では、-xs でコンパイルされたモジュールのデバッグ情報は、.o ファイルに保存されたデバッグ情報と同様に遅延して読み込まれます。しかし、dbx に、これらの情報を起動時に読み込むよう命令することができます。dbx の環境変数 delay_xs を使用すれば、-xs でコンパイルされたモジュールのデバッグ情報の読み込み遅延機能をオフにすることができます。この環境変数を設定するには、.dbxrc ファイルに次の行を追加します。

dbxenv delay_xs off

モジュールのリスト

dbx module コマンドとそのオプションは、デバッグセッション中にプログラムモジュールを追跡するのに役立ちます。1 つまたはすべてのモジュールに関するデバッグ情報を読み取るには、module コマンドを使用してください。通常 dbx は、モジュールに関するデバッグ情報を、必要に応じて自動的かつ「緩慢に」読み取ります。

1 つのモジュール name に関するデバッグ情報を読み取るには、次のように入力します。


(dbx) module [-f] [-q] name

すべてのモジュールについてのデバッグ情報を読み取るには、次のように入力します。


(dbx) module [-f] [-q] -a

-f

ファイルが実行可能ファイルよりも新しい場合でも、デバッグ情報の読み取りを強制的に実行します。 

-q

詳細メッセージを表示しません。