以前別のスレの書き込みでアドバイスを頂いたのですが,私はデバッグについてあまり理解せておらず,
VisualStadioを使っているのですが,デバッグのやり方は気になる行のいくつかにブレークポイントを
作成してデバッグを開始,止まったときその止まった状態での変数の中身等を調べることでバグを探すという
ように考えていました。
以前頂いたアドバイスでは
1.確実に再現できる最短状況を無操作で実現できるようにします。
2.1つ1つの衝突判定や、玉の挙動変化をログに記録したファイルを作ります。
3.問題が起きるフレーム数を経過したら、プログラムを自動終了します。
4.ログを調べます。
というように書いてありました。
1については問題が起きているところだけを別のプログラムで作成する
2,4についてはfwrite等を使ってゲーム内の状況(衝突判定のフラグ,玉の座標等)をtexファイル等に書き込む
というように認識しているのですが,あってますか?
デバッグの仕方
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: デバッグの仕方
1,3に関しては、#define TESTCODEとして特別なコードを#ifdef TESTCODEで挟みこむのも方法です。
2,4に関しては、fwrtieだとバイナリのような気もしますがfprintfなどで分かりやすいテキストを書き出すので十分だと思います。
とにかく、デバッグは工夫が必要で、プログラムを組むより頭を使う事があります。
ここで提示した方法は、ブレークポイントの弱点である瞬間の情報しか掴めず連続した状況は掴みづらい事を解消する一つの方法です。
※ ステップトレースで追いかけるのも限界がありますので。
複合条件のバグは、こういう方法でも取らない限り見つけづらいんですね。
デバッグの方法はいろいろ有るので、困ったら自分なりにまず考えて見てください。
デバック技法だけの本が出るぐらい奥は深いです。
「O'Reilly Japan - 実践 デバッグ技法」
http://www.oreilly.co.jp/books/9784873114064/
2,4に関しては、fwrtieだとバイナリのような気もしますがfprintfなどで分かりやすいテキストを書き出すので十分だと思います。
とにかく、デバッグは工夫が必要で、プログラムを組むより頭を使う事があります。
ここで提示した方法は、ブレークポイントの弱点である瞬間の情報しか掴めず連続した状況は掴みづらい事を解消する一つの方法です。
※ ステップトレースで追いかけるのも限界がありますので。
複合条件のバグは、こういう方法でも取らない限り見つけづらいんですね。
デバッグの方法はいろいろ有るので、困ったら自分なりにまず考えて見てください。
デバック技法だけの本が出るぐらい奥は深いです。
「O'Reilly Japan - 実践 デバッグ技法」
http://www.oreilly.co.jp/books/9784873114064/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。