デバッグ技法

debug.png

bugとは虫のこと。
debugとは虫を取ること!
プログラムに潜む虫を取るぞ。

どんな言語、ライブラリにせよ、まず知っておきたいのがデバッグする方法である。
基本的には以下の3つを知っておく必要がある

  • printfする方法….変数の値を、好きな文字と一緒にどこかに出力する方法
  • assertする方法…異常なことが起きたら、デバッガをそこで止めさせる方法
  • stack-traceする方法…..エラーが起きた個所の、諸悪の根源だった呼び出し元はどこだったのか!?突き止める方法

他には、もしライブラリだったら、OpenGLのエラー取得関数みたいに、ライブラリごとにエラーコード取得関数があるかもしれないから
それをチェックするにゃ。
シェーダのデバッグは、色に出力してみるのが一番手っ取り早い方法だよ。
テクスチャとしてビデオカードからデータを流し込む方法もあるけど、面倒くさいわりにわかりにくい方法だから、
やっぱり色で確認するのがいちばん!

思った通りの場所でプログラムを無理やりとめたい!

コマンドラインの場合

scanfでやる
scanfが無視されたら
rewind(stdin);
または
fflush(stdin);
する
ストリームのバッファをフラッシュします。
getcharなんかも使えそう
こんなかんじにするといい

while(!q.empty() ){
//何かの処理
      rewind(stdin);//標準入力のバッファをクリアする
      int gomi;
      scanf("%d",&gomi);//キーを押さない限り進まない
}

デバッグのじゃまになるもの

  • WindosAPI…コンソールでprintfできない!

find-bugs-test

サポートサイト Wikidot.com find-bugs-test