8.2. デバッグプログラムの準備

デバッグ情報を使用したプログラムのコンパイル

GNU デバッガー が読み取り可能なデバッグ情報で C プログラムをコンパイルするには、-g オプションを指定して gcc コンパイラーが実行されていることを確認します。

$ scl enable devtoolset-12 'gcc -g -o output_file input_file...'

同様に、デバッグ情報を使用して C++ プログラムをコンパイルするには、以下を実行します。

$ scl enable devtoolset-12 'g++ -g -o output_file input_file...'

例8.1 デバッグ情報を使用した C プログラムのコンパイル

以下の内容を fibonacci.c 含むという名前のソースファイルについて考えてみましょう。

#include <stdio.h>
#include <limits.h>

int main (int argc, char *argv[]) {
  unsigned long int a = 0;
  unsigned long int b = 1;
  unsigned long int sum;

  while (b < LONG_MAX) {
    printf("%ld ", b);
    sum = a + b;
    a = b;
    b = sum;
  }

  return 0;
}

GNU デバッガー のデバッグ情報とともに、Red Hat Developer Toolset の GCC を使用してコマンドラインでこのプログラムをコンパイルします。

$ scl enable devtoolset-12 'gcc -g -o fibonacci fibonacci.c'

これにより、現在の作業ディレクトリーに fibonacci という名前のバイナリーファイルが作成されます。

既存パッケージのデバッグ情報のインストール

システムにすでにインストールされているパッケージのデバッグ情報をインストールするには、次のコマンドを実行します。

# debuginfo-install package_name

debuginfo-install ユーティリティーをシステムで使用できるようにするには、yum-utils パッケージがインストールされている必要があることに注意してください。

例8.2 glibc パッケージのデバッグ情報のインストール

glibc パッケージのデバッグ情報をインストールします。

# debuginfo-install glibc
Loaded plugins: product-id, refresh-packagekit, subscription-manager
--> Running transaction check
---> Package glibc-debuginfo.x86_64 0:2.17-105.el7 will be installed
...