ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: dbx コマンドによるデバッグ Oracle Solaris Studio 12.3 Information Library (日本語) |
デバッグ時ディレクトリへのコンパイル時ディレクトリのマッピング
dbx を完全にサポートするために -g オプションを必要とする共有ライブラリ
dbx でデバッグを行う準備として、プログラムを -g または -g0 オプションを使用してコンパイルする必要があります。
-g オプションは、コンパイル時にデバッグ情報を生成するよう、コンパイラに命令します。
たとえば、C++ コンパイラを使用してコンパイルするには、次のように入力します。
% CC -g example_source.cc
C++ コンパイラの場合:
-g オプションだけを使用する (最適化レベルを指定しない) と、デバッグ情報はオンになり、関数のインライン化はオフになります。
-g オプションと、-O オプションまたは -xOlevel オプションを併用すると、デバッグ情報はオンになり、関数のインライン化はオフになりません。これらのオプションにより、限定されたデバッグ情報とインライン関数が生成されます。
-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 に対して別のデバッグファイルを作成するには、次のことを行います。
objcopy --only-keep-debug a.out a.out.debug
objcopy --strip-debug a.out
objcopy --add-gnu-debuglink=a.out.debug a.out
Solaris プラットフォームの場合、gobjcopy コマンドを使用します。Linux プラットフォームの場合、objcopy コマンドを使用します。
Linux プラットフォームでは、objcopy コマンドの -help オプションを使用して、プラットフォームで -add-gnu-debuglink オプションがサポートされているかどうかを調べることができます。 objcopy コマンドの -only-keep-debug オプションは、a.out.debug を完全な実行可能ファイルにすることができる cp a.out a.out.debug コマンドに置き換えることができます。