デバッグの仕方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ヨシタケ

デバッグの仕方

#1

投稿記事 by ヨシタケ » 12年前

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

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: デバッグの仕方

#2

投稿記事 by softya(ソフト屋) » 12年前

1,3に関しては、#define TESTCODEとして特別なコードを#ifdef TESTCODEで挟みこむのも方法です。
2,4に関しては、fwrtieだとバイナリのような気もしますがfprintfなどで分かりやすいテキストを書き出すので十分だと思います。

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

デバック技法だけの本が出るぐらい奥は深いです。
「O'Reilly Japan - 実践 デバッグ技法」
http://www.oreilly.co.jp/books/9784873114064/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ヨシタケ

Re: デバッグの仕方

#3

投稿記事 by ヨシタケ » 12年前

詳しく説明してくれるだけでなく,本についても教えていただきありがとうございます。

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

閉鎖

“C言語何でも質問掲示板” へ戻る