平鍋です.
On Thu, 30 Aug 2001 03:11:50 +0900,
Kanju <kanju@....jp> said:
> あ、悔しい。
> 作ろうと思っていたのに。
> 誰でも思いつくようなものですから、やったもん勝ちですね。
> こっちのはまだ冗談みたいなのしか入ってませんし。
> http://mono-ki.hoops.ne.jp/diary/txt/computer/debugpatern.html
おもしろいですね.
パターンにはならないかもしれませんが,私が思い付くデバッグテ
クニックを列挙してみます.
・告白デバッグ:
人に横についてもらい,説明する.「こうして,ああして,こうな
るでしょ,こうなるはずなのに,なんでかな〜,...あ,そう
か!」
・机上デバッグ:
紙に印刷し,赤ペンを持ってソースを精読する.
・ステップデバッグ:
デバッガでステップ実行する.
・プリントデバッグ:
プリント文を入れまくる.
・バイナリサーチ・プリントデバッグ:
デバッグプリントを入れる際に,バグがありそうな箇所の中間地点に入
れる.そして前か後かを切り分ける.これを再帰的に繰り返す.
・assert デバッグ:
ここでは,こうなっているハズ,ここでは,こう,と,頭の中の仮
定を assert 文で埋め込んで行く.(マルチスレッドだと,これが
ないとキツイですよね)
・ctrace デバッグ:
C 言語コードなら,ctrace 通して,全ステートメントをプリントしな
がら走らせる.
・truss デバッグ:
UNIX で truss を使って走らせる.システムコールに入るところで
ログが取れる.
・lint デバッグ:
C言語なら,まずは static な lint チェックをする.
gcc なら -Wall する, -ecpp (Effective C++ rule check)する.
・メモリ関係デバッグ:
C/C++ なら,デバッグ用 malloc/new を使う.
free/delete 後にポインタに 0 を代入する.
お金があるなら,purify を使う.
・ユニットテストデバッグ:
バグを再現するユニットテストを書く.大きいプログラムだと,
ここまで来れば,ほぼ解決したも同然.
以上