概要
gdbは、プログラムの実行フローを制御し、変数値を検査し、メモリ状態を確認するなど、詳細なデバッグ機能を提供します。特にコンパイルされたバイナリファイルの問題を分析するのに役立ちます。
主な機能
- 実行中のプログラムの開始/停止
- ブレークポイントの設定
- 変数値の検査と変更
- スタックトレースの確認
- メモリ内容の検査
- コアファイルの分析
主なオプション
gdbは対話モードで主に使われますが、起動時に特定のオプションで初期設定を行ったり、非対話スクリプトを実行したりできます。
起動/接続オプション
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`gdb` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
gdbは対話的に使用されることが多いので、例ではgdbプロンプト内で入力するコマンドも含まれています。
基本デバッグセッション開始
gdb ./my_program
コンパイルされたプログラム (例: my_program) をgdbでロードしてデバッグセッションを開始します。
ブレークポイント設定と実行
gdb ./my_program
(gdb) b main
(gdb) r
main関数にブレークポイントを設定してプログラムを実行します。ブレークポイントで実行が停止します。
変数値の確認
gdb ./my_program
(gdb) b my_function
(gdb) r
(gdb) p my_variable
ブレークポイントで停止した後、特定の変数の現在の値を出力します。
コアファイル分析
gdb ./my_program core.dump
プログラムのクラッシュで生成されたコアファイルを使用して、クラッシュ時のプログラムの状態を分析します。
実行中のプロセスに接続
gdb -p 12345
既に実行中のプロセスID (PID) 12345にgdbを接続してデバッグします。
起動時にコマンド自動実行
gdb -ex 'b main' -ex 'r' ./my_program
gdb起動と同時にmain関数にブレークポイントを設定してプログラムを実行します。
インストール
gdbはほとんどのLinuxディストリビューションでデフォルトで提供されておらず、開発ツールパッケージの一部としてインストールする必要があります。
Debian/Ubuntu
sudo apt update && sudo apt install gdb
APTパッケージマネージャーを使用してgdbをインストールします。
Fedora/CentOS/RHEL
sudo dnf install gdb
DNFまたはYUMパッケージマネージャーを使用してgdbをインストールします。
ヒントと注意点
gdbを効果的に使用するためのヒントと注意点です。
コンパイル時にデバッグ情報を含める
gdbでデバッグするには、プログラムを `-g` オプションでコンパイルしてデバッグ情報を含める必要があります。そうしないと、ソースコード情報や変数名を表示できません。
- 例: `gcc -g myprogram.c -o myprogram`
よく使うgdbコマンド
gdbプロンプト内でよく使われる主要なコマンドです。
- `b <関数名/行番号>`: ブレークポイント設定 (breakpoint)
- `r`: プログラム実行 (run)
- `n`: 次の行へ移動 (next)
- `s`: 関数内へステップイン (step)
- `p <変数名>`: 変数値を出力 (print)
- `c`: 次のブレークポイントまで実行 (continue)
- `q`: gdb終了 (quit)
TUIモードの活用
gdbのテキストユーザーインターフェース (TUI) モードを活用すると、ソースコード、レジスタ、アセンブリなどを一緒に表示しながらデバッグ効率を高めることができます。
- `gdb -tui <program>` またはgdb内で `layout src` コマンドを使用