gdbすごい
- 作者: Arnold Robbins,千住治郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/09/08
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 39回
- この商品を含むブログ (22件) を見る
まあ、GDBハンドブックのよく使うコマンドって所を読んで適当に動かしてただけなんですが。それでもデバッグがはかどるはかどる。そんな感じのメモです。
環境: WindowsXP SP3 / MinGW + MSYS
アプリケーションをデバッグシンボル付きでコンパイルする
デバッグシンボル付けないと動かせない……はずなのでそういう風にコンパイルします。
今まで、Makefileには-s -O2とか書いてあったのでそれを消しました。最適化とかstripされると困るので。
#CFLAGS = -Wall -Wextra -pedantic-errors -std=c99 -s -O2 CFLAGS = -Wall -Wextra -pedantic-errors -std=c99 -g .SUFFIXES: .c .o .c.o: $(CC) $< -o $@ -c $(CFLAGS) # あとなんかいろいろ
gdbの簡易な使い方
「GDBハンドブック 7.10 よく使用するコマンド」にあるよりも少ないコマンドだけれど、実際この程度でも大丈夫かも。
コマンド名 | ショートカット | 機能 |
break | b | ブレークポイントの指定 |
continue | cont | 処理の継続 |
next | n | いわゆるステップオーバー |
p | 変数の値などの表示 | |
quit | q | 終了 |
run | r | アプリケーションの実行 |
step | s | いわゆるステップイン |
これだけわかればそんなに困らないかな……
#include <windows.h> static int add(int a, int b) { return a + b; } int main(void) { int i = 0; i = add(1, 2); i = add(2, 4); return 0; }
こんな感じのソースコードをデバッグ(する必要も無いような気がするけど)するとなると
- b main # main関数にブレークポイント
- r # 実行
- s... # 何度か進んでいく
- p i # 変数iの値を表示
- s... # もしくはnとかcont
こんな感じで進める。プロンプトに戻ってきたら"q"で終了。
数個のコマンドでこれだけ出来るし、しかも端末内なのでいろいろなところで使えそうな気がします。
ブレークポイントは"b main"でなくても、add関数が見たい場合は"b add"とか他にも行数で指定できたりも出来るようです。