読者です 読者をやめる 読者になる 読者になる

Re:Readme

PCトラブルや環境構築、家電量販店とかで買ったもののメモ。ご利用は自己責任で。

GNUデバッガ(GDB)入門

C(C++)のプログラムをちょろっと書いて動かしたら動作がおかしい、なんて時にプリントデバッグはあんまり効率がよろしくないので、GDBの基本的な使い方を簡単にメモする。インストールについては省略。


参考にしたのはこちらの記事。
まずコンパイル時に、-gオプションを付ける。例えばhoge.cというソースファイルをコンパイルするにあたっては

$ gcc -g hoge.c -o hoge

みたいに。

で、

GDBを起動。

$ b <行番号>

のようにBreakPointを作成、実行後その行で一旦プログラムの実行を中断(break)する。

$ p fuga

で、停止した時点での変数の値を出力(print)する。

$ c

と打つと次のブレークポイントまで実行を再開(continue)する。

$ s

あるいは

$ n

と打つと現在の行を実行して次の行へ移る(step/next)。この2つの違いは、関数呼び出しにおいてサブルーチン内を参照する(s)か飛ばす(n)かの違い。

その他についてはこちらこちらを参照。


ちなみにMacにはGDBは標準では入っていないと思われる。代わりに、XcodeとDeveloper toolsのインストールを行った際にLLDBというデバッガが入っていたらしい。
gdbコマンドの代わりにlldbコマンドを実行すれば、後はほぼ同様の操作でデバッグが出来るっぽい(コマンドはあんまり共通してないみたいだけど、感覚的には近い)。それと、コンパイルの際に「hoge.dSYM」と呼ばれるデバッグ用のバイナリデータを含むと思われるディレクトリ(一見するとファイルに見えるが)が生成されるみたい(こちらの記事も参照)。