ページ 11

デバッグの仕方

Posted: 2013年7月15日(月) 18:02
by ヨシタケ
以前別のスレの書き込みでアドバイスを頂いたのですが,私はデバッグについてあまり理解せておらず,
VisualStadioを使っているのですが,デバッグのやり方は気になる行のいくつかにブレークポイントを
作成してデバッグを開始,止まったときその止まった状態での変数の中身等を調べることでバグを探すという
ように考えていました。

以前頂いたアドバイスでは
1.確実に再現できる最短状況を無操作で実現できるようにします。
2.1つ1つの衝突判定や、玉の挙動変化をログに記録したファイルを作ります。
3.問題が起きるフレーム数を経過したら、プログラムを自動終了します。
4.ログを調べます。
というように書いてありました。

1については問題が起きているところだけを別のプログラムで作成する
2,4についてはfwrite等を使ってゲーム内の状況(衝突判定のフラグ,玉の座標等)をtexファイル等に書き込む
というように認識しているのですが,あってますか?

Re: デバッグの仕方

Posted: 2013年7月15日(月) 18:48
by softya(ソフト屋)
1,3に関しては、#define TESTCODEとして特別なコードを#ifdef TESTCODEで挟みこむのも方法です。
2,4に関しては、fwrtieだとバイナリのような気もしますがfprintfなどで分かりやすいテキストを書き出すので十分だと思います。

とにかく、デバッグは工夫が必要で、プログラムを組むより頭を使う事があります。
ここで提示した方法は、ブレークポイントの弱点である瞬間の情報しか掴めず連続した状況は掴みづらい事を解消する一つの方法です。
※ ステップトレースで追いかけるのも限界がありますので。
複合条件のバグは、こういう方法でも取らない限り見つけづらいんですね。
デバッグの方法はいろいろ有るので、困ったら自分なりにまず考えて見てください。

デバック技法だけの本が出るぐらい奥は深いです。
「O'Reilly Japan - 実践 デバッグ技法」
http://www.oreilly.co.jp/books/9784873114064/

Re: デバッグの仕方

Posted: 2013年7月16日(火) 21:16
by ヨシタケ
詳しく説明してくれるだけでなく,本についても教えていただきありがとうございます。

自分でデバッグについて詳しく勉強してみます。