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(これで一意に特定できるのかな?)を使用する.

This article was written by Fujiko