インストール - GDB

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

GDBとは、UNIX系OSで標準的に利用されるデバッガの1つである。

実行形式のファイルを指定して起動すると、プログラムの実行を開始して、実行状態の監視や介入が可能となる。
特定の時点における変数などの値の表示や代入、特定の位置を指定して実行を停止(ブレークポイント)、
1命令ずつ停止させて実行(ステップ実行)等の機能を、対話的なコマンドラインインターフェースで利用することができる。

また、GDBを直接介した実行だけでなく、OS上で既に実行されているプロセスを指定して制御する(アタッチする)こともできる。
別のコンピュータ上で実行されているプログラムをデバッグする遠隔モードもあるため、組み込みソフトウェアの開発やLinuxカーネル開発などにも用いられる。


依存関係のライブラリのインストール

GDBの依存関係のライブラリをインストールする。

# CentOS
sudo yum install texinfo gcc gcc-c++ make python3-devel wget

# SUSE
sudo zypper install texinfo gcc gcc-c++ make python3-devel wget


Texinfoをパッケージ管理システムを使用してインストールする場合は膨大な時間が掛かるため、手動でインストールすることを推奨する。

  1. まず、Texinfoの公式Webサイトから、Texinfoをダウンロードする。
  2. 次に、Texinfoを解凍して、Texinfoディレクトリ直下にbuildディレクトリを作成する。
    mkdir build
  3. Texinfoをビルドおよびインストールするため、以下のコマンドを実行する。
    ../configure --prefix=/home/<ユーザ名>/InstallSoftware/Texinfo
    make -j 8
    make TEXMF=/home/<ユーザ名>/InstallSoftware/Texinfo/texmf install-tex
    make install
  4. .profileファイルまたは.bashrcファイル等に、以下の環境変数を追記する。
    export PATH="$HOME/InstallSoftware/Texinfo/bin:$PATH"
    export LD_LIBRARY_PATH="$HOME/InstallSoftware/Texinfo/lib64:$LD_LIBRARY_PATH"



GDBのインストール

GDBの公式Webサイトから、GDBのソースコードをダウンロードする。
または、以下のコマンドを実行してダウンロードする。

wget https://ftp.gnu.org/gnu/gdb/gdb-<バージョン名>.tar.xz


ダウンロードしたファイルを解凍して、解凍したディレクトリに移動する。

tar xvf gdb-<バージョン名>.tar.xz
cd gdb-<バージョン名>


ビルド用のディレクトリを作成して、そのディレクトリに移動する。

mkdir build
cd build


※注意
Qt Creatorにおいて、ユーザが個別にインストールしたGDBを使用する時は、
GDBをコンパイルする際に、以下のように、Pythonの実行ファイルとライブラリのパスを指定する必要がある。

[ -z "${PYTHON}" ] && export PYTHON=python3
PYTHON_LIBDIR=$("${PYTHON}" -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")


以下のコマンドを実行して、GDBをインストールする。

../configure --prefix="$HOME/InstallSoftware/GDB/GDB-<バージョン名>"
または
../configure --prefix="$HOME/InstallSoftware/GDB/GDB-<バージョン名>" --with-python="${PYTHON}" LDFLAGS="-L${PYTHON_LIBDIR}"

make -j 8
make -C gdb install


必要に応じて、.profileファイルまたは.bashrcファイル等に環境変数のパスを通す。

export PATH="$HOME/InstallSoftware/GDB/GDB-<バージョン名>/bin:$PATH"