プログラムは -g または -g0 オプションでコンパイルし、dbx でデバッグする準備をします。
-g オプションは、コンパイル時にデバッグ情報を生成するよう、コンパイラに指示します。
たとえば、C++ を使用してコンパイルするには、次のように入力します。
% CC -g example_source.cc |
C++ では、-g オプションは、デバッグをオンにし、関数のインライン化をオフにします。- g0 (ゼロ) オプションは、デバッグをオンにし、関数のインライン化には影響を与えません。-g0 オプションでインライン関数をデバッグすることはできません。-g0 オプションは、リンクタイムおよび dbx の起動時間を大幅に削減します (プログラムによるインライン関数の使用に依存)。
dbx で使用するため、最適化コードをコンパイルするには、-O (大文字 O) と -g オプションの両方でソースコードをコンパイルします。
dbx により、 実行可能ファイルから別のデバッグファイルにデバッグ情報をコピーし、実行可能ファイルからその情報をストリップし、これらの 2 ファイル間にリンクを作成するために、Linux プラットフォームでは objcopy コマンド、Solaris プラットフォームでは gobjcopy コマンドのオプションを使用できます。
dbx は、次の順序で別のデバッグファイルを検索し、最初に見つかったファイルからデバッグ情報を読み取ります。
実行可能ファイルを含むディレクトリ。
実行可能ファイルを含むディレクトリ内の debug という名前のサブディレクトリ。
グローバルデバッグファイルディレクトリのサブディレクトリ。dbx 環境変数 debug_file_directory がディレクトリのパス名に設定されている場合は、このサブディレクトリを表示したり変更したりできます。環境変数のデフォルト値は、/usr/lib/debug です。
たとえば、実行可能ファイル a.out に対して別のデバッグファイルを作成するには、次のことを行います。
デバッグ情報を含む、a.out.debug という名前の別のデバッグファイルを作成します。
a.out からデバッグ情報をストリップします。
2 つのファイル間にリンクを作成します。Solaris プラットフォームの場合、gobjcopy コマンドを使用します。Linux プラットフォームの場合、objcopy コマンドを使用します。
Linux プラットフォームでは、objcopy コマンドの -help オプションを使用して、プラットフォームで -add-gnu-debuglink オプションがサポートされているかどうかを調べることができます。 objcopy コマンドの -only-keep-debug オプションは、a.out.debug を完全な実行可能ファイルにすることができる cp a.out a.out.debug コマンドに置き換えることができます。