GDB

GDBの使い方を調べてみた.将来的にはデバッガを使えるようになって効率的な開発をしていくのだ.
入門編
応用編
GDBじゃないけど……
入門編
基本的なGDBの使い方

とにかくちょっと使ってみる

2003-07-20T15:13+09:00 matsu

gdbをとにかくちょっと使ってみた.

breakポイント

2003-07-20T15:13+09:00 matsu

おそらく多くのデバッグ作業はbreakポイントとステップ実行で足りるものではないだろうか.ここではbreakポイントの設定方法を中心に記述する.breakポイントはいろんな方法で指定できるようだ.

watch

2003-07-20T15:13+09:00 matsu

変数値の変化を追跡できるとうれしいかもしれない.

continueとステップ実行

2003-07-20T15:13+09:00 matsu

breakした後処理を続けるにはcontinueで継続実行するか,step実行する.

スタック

2003-07-20T15:13+09:00 matsu

JavaのExceptionクラスのprintStackTrace()は重宝する.で,gdbを使用するとCでもそれができる.

シグナ

2003-07-20T15:13+09:00 matsu
gdbではシグナルの制御もできる.

ソースの表示

2003-11-24T01:06+09:00 matsu


gdbからソースを表示できると嬉しい.GNU Emacsのgdbモード(?)を使用するとすごく便利でカッチョイイのだが,どのマシンにもGNU Emacsがあるとは限らないので,そんなときのためにソースの表示方法を示しておく.

データの表示

2003-07-20T15:13+09:00 matsu

データの表示ができないとデバッグもままならないしれない.

処理を変更する

2003-07-20T15:13+09:00 matsu

デバッグ上で処理を変更してうまくいったらソースに反映する,なんてできると嬉しい.

コマンド定義と初期化ファイル

2003-07-20T15:13+09:00 matsu


複数のgdbコマンドをまとめて定義したりgdb起動時に初期化ファイルに書いたコマンドを実行したりするとうれしい.

コア

2003-10-25T13:00+09:00 matsu


多くのシステムにはgcoreというコマンドがあって,それを使用すると指定したプロセスのコアファイルを取得できるらしい.GNU/Linuxシステム(少なくとも私のマシン)には,gcoreはないが,gdbを使用すると容易にコアファイルを取得できる.さらにgdbにコアファイルを渡すことで,ダンプ時点のプロセスの状態を調べることができる.
応用編

入門編の事柄を踏まえて,GDBを使い込んでみたい.

GDBによるテスト自動化への試み

2004-01-20T23:45+09:00 matsu


…GDBの機能を使用すると,テストを自動化できないだろうか…そんな疑問がよぎったのでちょっと試してみた.


attach

2003-11-29T21:00+09:00 matsu

なんらかの理由でgdbからいきなり起動できないプログラムや,今運用環境で動いているプログラムをデバッグしたい場合などには,動いているプロセスにattachしてデバッグすることができる.
GDBじゃないけど……
GDBとは直接関係ないが,デバッグに役立ちそうなTIPs

プロファイル(gcc)

2003-07-20T15:13+09:00 matsu

プログラムのパフォーマンスを効率的にあげるには,多く呼び出される関数や一番重い処理をする関数をチューニングする必要がある.ここではgccのプロファイルという機能を用いて呼び出し回数や実行時間を調べるための方法を書く.

プログラムのフロー(cflow)

2003-11-08T13:20+09:00 matsu

ctagsやetagsなんてすごいものがあるんだから,これぐらいできるだろうと思っていたら,やっぱりあった.cflowはある関数がどんな関数をコールするかを解析して表示してくれる.すなわちプログラムのフローを表示してくれる.cflowは結構古くからあるらしく,いろんな実装があるが,今回もcflow_2.0-15_i386.deb(これで一意に特定できるのかな?)を使用する.