Sun Studio 12: dbx コマンドによるデバッグ

オブジェクトファイルおよび実行可能ファイル内のデバッグ情報

ソースファイルを -g オプションを使用してコンパイルして、プログラムをよりデバッグしやすくすることができます。-g オプションを使用すると、コンパイラがデバッグ情報 (スタブまたは DWARF 形式) をプログラム用のコードおよびデータとともにオブジェクトファイルに記録します。

dbx は、必要なときに要求に応じて各オブジェクトファイル (モジュール) のデバッグ情報を解析して読み込みます。module コマンドを使用することによって dbx に特定のモジュール、またはすべてのモジュールのデバッグ情報を読み込むように要求することができます。「ソースファイルおよびオブジェクトファイルの検索」も参照してください。

オブジェクトファイルの読み込み

オブジェクト (.o) ファイルがリンクされると、リンカーは任意で要約情報のみを結果ロードオブジェクトに保存することができます。この要約情報は実行時に dbx で使用して、実行可能ファイルからではなくオブジェクトファイル自体から残りのデバッグ情報を読み込むことができます。作成された実行可能ファイルの容量は小さいですが、dbx を実行するときにオブジェクトファイルが必要になります。

この要件は、オブジェクトファイルを -xs オプションを使用してコンパイルし、オブジェクトファイルのすべてのデバッグ情報をリンク時に実行可能ファイルに入れることによって変更することができます。

アーカイブライブラリ (.a ファイル) をオブジェクトファイルとともに作成して、そのアーカイブライブラリをプログラムで使用した場合、dbx は必要に応じてアーカイブライブラリからオブジェクトファイルを抽出します。ここではオリジナルのオブジェクトファイルは必要ありません。

ただし、すべてのデバッグ情報を実行可能ファイルに入れると、追加のディスク容量が必要になります。デバッグ情報は実行時にプロセスイメージに読み込まれないため、プログラムが遅くなることはありません。

スタブ (情報をデバッグするためのデフォルトの形式) を使用する場合のデフォルトの動作は、コンパイラが要約情報のみを実行可能ファイルに配置します。

DWARF 形式では、オブジェクトファイルの読み込みをサポートしていません。


注 –

DWARF 形式は、同じ情報をスタブ形式で記録するよりも大幅にサイズが小さくなります。ただし、すべての情報が実行可能ファイルにコピーされるため、DWARF 情報はスタブ情報よりもサイズが大きく見えてしまいます。


モジュールについてのデバッグ情報

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

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


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

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


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

ここで

-a

すべてのモジュールを指定します。

-f

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

-q

静止モードを指定します。

-v

言語、ファイル名などを出力する冗長モードを指定します。これはデフォルト値です。

現在のモジュール名を出力するには、次のように入力します。


(dbx) module

モジュールのリスト

modules コマンドは、モジュール名をリストすることにより、モジュールを追跡することができます。

すでに dbx に読み取られたデバッグ情報を含むモジュールの名前をリスト表示するには、次のように入力します。


(dbx) modules [-v] -read

すべてのプログラムモジュール名 (デバッグ情報付き、またはなし) をリスト表示するには、次のように入力します。


(dbx) modules [-v]

デバッグ情報付きのすべてのプログラムモジュール名をリスト表示するには、次のように入力します。


(dbx) modules [-v] -debug

ここで

-v 

言語、ファイル名などを出力する冗長モードを指定します。