Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

デバッグのためのプログラムのコンパイル

dbx でデバッグを行う準備として、プログラムを -g または -g0 オプションを使用してコンパイルする必要があります。

-g オプションでコンパイル

-g オプションは、コンパイル時にデバッグ情報を生成するよう、コンパイラに命令します。

たとえば、C++ コンパイラを使用してコンパイルするには、次のように入力します。


% CC -g example_source.cc

C++ コンパイラの場合:

最適化コードを dbx で使用するためにコンパイルするには、-O (大文字 O) と -g オプションの両方でソースコードをコンパイルします。

別のデバッグファイルの使用

dbx により、 実行可能ファイルから別のデバッグファイルにデバッグ情報をコピーし、実行可能ファイルからその情報をストリップし、これらの 2 ファイル間にリンクを作成するために、Linux プラットフォームでは objcopy コマンド、Solaris プラットフォームでは gobjcopy コマンドのオプションを使用できます。

dbx は、次の順序で別のデバッグファイルを検索し、最初に見つかったファイルからデバッグ情報を読み取ります。

たとえば、実行可能ファイル a.out に対して別のデバッグファイルを作成するには、次のことを行います。

Procedure別のデバッグファイルの作成

  1. デバッグ情報を含む、a.out.debug という名前の別のデバッグファイルを作成します。


    objcopy --only-keep-debug a.out a.out.debug
    
  2. a.out からデバッグ情報をストリップします。


    objcopy --strip-debug a.out
    
  3. 2 つのファイル間にリンクを作成します。


    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 コマンドに置き換えることができます。