ファイヤープロジェクト
GDB
GDBの使い方を調べてみた.将来的にはデバッガを使えるようになって効率的な開発をしていくのだ.
基本的なGDBの使い方
2003-07-20T15:13+09:00   matsu
gdbをとにかくちょっと使ってみた.
2003-07-20T15:13+09:00   matsu
おそらく多くのデバッグ作業はbreakポイントとステップ実行で足りるものではないだろうか.ここではbreakポイントの設定方法を中心に記述する.breakポイントはいろんな方法で指定できるようだ.
2003-07-20T15:13+09:00   matsu
変数値の変化を追跡できるとうれしいかもしれない.
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を使い込んでみたい.
2004-01-20T23:45+09:00   matsu
...GDBの機能を使用すると,テストを自動化できないだろうか...そんな疑問がよぎったのでちょっと試してみた.
2003-11-29T21:00+09:00   matsu
なんらかの理由でgdbからいきなり起動できないプログラムや,今運用環境で動いているプログラムをデバッグしたい場合などには,動いているプロセスにattachしてデバッグすることができる.
GDBとは直接関係ないが,デバッグに役立ちそうなTIPs
2003-07-20T15:13+09:00   matsu
プログラムのパフォーマンスを効率的にあげるには,多く呼び出される関数や一番重い処理をする関数をチューニングする必要がある.ここではgccのプロファイルという機能を用いて呼び出し回数や実行時間を調べるための方法を書く.
2003-11-08T13:20+09:00   matsu
ctagsやetagsなんてすごいものがあるんだから,これぐらいできるだろうと思っていたら,やっぱりあった.cflowはある関数がどんな関数をコールするかを解析して表示してくれる.すなわちプログラムのフローを表示してくれる.cflowは結構古くからあるらしく,いろんな実装があるが,今回もcflow_2.0-15_i386.deb(これで一意に特定できるのかな?)を使用する.
matsu(C)
Since 2002
Mail to matsu