プログラムを何とか組めたけどデバッグできないって人が多いので、ちょっとデバッグについて。
こちらも合わせて読んでみてください ↓
「簡単RPG講座 番外編。 デバッグ入門 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/blog.php?u=114&b=982&c=2
プログラムを組んだけど動かない!って人は沢山いますね。
こういう人にデバッグ法を説明すると、よく分からないって返答をよくされます。
デバッグ方法がわからないってことは実はプログラムの動きをよく分かっていないんじゃないかと思います。
プログラムの動きを理解するって意味でもデバッグは有効なんですけどね。
デバッガの使い方やら、ログを取るとか、printfデバッグ法やら色々有りますがやっていることは同じです。
プログラムの流れが意図したタイミングで動いているか確認して、変数に意図した値が意図したタイミングで入っているかを確認することです。
【補足】 頭の中の動作イメージと実際の動作を確認するのがデバッグです。なので、頭のなかの動作イメージがないとデバッグできません。
デバッグできないとプログラムは完成しません。
つまり、プログラムを完成させるにはプログラムを組む以上にデバッグするというのは大事なことなのです。
それとプログラムを組むときにデバッガしやすい組み方をしているかは非常に重要で、これを怠るとバグに何日も悩まされることになります。
結局、デバッグしていないプログラムは実はたまたま動いているだけの未知の爆弾を抱えた存在かもしれません。
完成した!って思ったものは幻かもしれませんよ・・・。
スレッドでのタイミングバグとかポインタのミスとか配列添え字範囲外とか恐怖のバグは、またの機会に。
デバッグの重要性。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
デバッグの重要性。
最後に編集したユーザー softya(ソフト屋) on 2013年8月16日(金) 15:54 [ 編集 2 回目 ]
Re: デバッグの重要性。
職業プログラマには自分の書いたコードを自分で動かさないひとがいるらしいですよ。へろりんご さんが書きました:書いたプログラムを動かして、あれ? おかしいな? って思った次にどんな行動を取るのでしょうか。 戦慄を覚えます。
ここの質問掲示板でも、コンパイルしましたか?実行してみましたか?なんて返信が付くのは珍しくないですしね。
お手本通りに書いてみた、で止まってるんですよね。
最後に編集したユーザー ISLe on 2013年8月19日(月) 17:39 [ 編集 2 回目 ]
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: デバッグの重要性。
いるんですよね。最初のほうで書いた恐怖バグで投げちゃう人。
> スレッドでのタイミングバグとかポインタのミスとか配列添え字範囲外とか恐怖のバグは、またの機会に。
「いや、投げられても誰かが取らないとリリースできなんですが・・・(涙)」状態です。
そういうのは大抵複合的にポインタが絡んでバグを取るのに時間がかかります。
そうなるのは、そもそも設計が悪いからって話でも有りますが、追いかけられないみたいです。
そういえば、スレッドでデータを書き換えてるのに、何故かデータがバグるって相談されてこともあったな。
調べたら「スレッドで書き換えてるやん!」ってオチでした。
そういえば昔、汎用機で仕事していた時にオーバレイ構造のプログラムで変数の内容が化けますと言われて見たらオーバーレイ領域に変数が置いてあったことがあったなぁ。
「そりゃオーバレイが切り替わっているんだから変数化けますよ~」と言ったら目が点になるようなプロラマー(年上)の人もいたなぁと思いだした。
> スレッドでのタイミングバグとかポインタのミスとか配列添え字範囲外とか恐怖のバグは、またの機会に。
「いや、投げられても誰かが取らないとリリースできなんですが・・・(涙)」状態です。
そういうのは大抵複合的にポインタが絡んでバグを取るのに時間がかかります。
そうなるのは、そもそも設計が悪いからって話でも有りますが、追いかけられないみたいです。
そういえば、スレッドでデータを書き換えてるのに、何故かデータがバグるって相談されてこともあったな。
調べたら「スレッドで書き換えてるやん!」ってオチでした。
そういえば昔、汎用機で仕事していた時にオーバレイ構造のプログラムで変数の内容が化けますと言われて見たらオーバーレイ領域に変数が置いてあったことがあったなぁ。
「そりゃオーバレイが切り替わっているんだから変数化けますよ~」と言ったら目が点になるようなプロラマー(年上)の人もいたなぁと思いだした。