デバッグの重要性。

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

デバッグの重要性。

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

プログラムを何とか組めたけどデバッグできないって人が多いので、ちょっとデバッグについて。
こちらも合わせて読んでみてください ↓
「簡単RPG講座 番外編。 デバッグ入門 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/blog.php?u=114&b=982&c=2

プログラムを組んだけど動かない!って人は沢山いますね。
こういう人にデバッグ法を説明すると、よく分からないって返答をよくされます。
デバッグ方法がわからないってことは実はプログラムの動きをよく分かっていないんじゃないかと思います。
プログラムの動きを理解するって意味でもデバッグは有効なんですけどね。

デバッガの使い方やら、ログを取るとか、printfデバッグ法やら色々有りますがやっていることは同じです。
プログラムの流れが意図したタイミングで動いているか確認して、変数に意図した値が意図したタイミングで入っているかを確認することです。
【補足】 頭の中の動作イメージと実際の動作を確認するのがデバッグです。なので、頭のなかの動作イメージがないとデバッグできません。

デバッグできないとプログラムは完成しません。
つまり、プログラムを完成させるにはプログラムを組む以上にデバッグするというのは大事なことなのです。
それとプログラムを組むときにデバッガしやすい組み方をしているかは非常に重要で、これを怠るとバグに何日も悩まされることになります。

結局、デバッグしていないプログラムは実はたまたま動いているだけの未知の爆弾を抱えた存在かもしれません。
完成した!って思ったものは幻かもしれませんよ・・・。

スレッドでのタイミングバグとかポインタのミスとか配列添え字範囲外とか恐怖のバグは、またの機会に。
最後に編集したユーザー softya(ソフト屋) on 2013年8月16日(金) 15:54 [ 編集 2 回目 ]

アバター
せんちゃ
記事: 50
登録日時: 14年前

Re: デバッグの重要性。

投稿記事 by せんちゃ » 12年前

つい最近、実際にデバッグできないプログラマーを目にして唖然としたことがあります。
自分で書いたコードなのにログを出すとか問題の箇所になっている部分のソースを確かめるとか、全然やらないで一人頭を抱えるタイプの人ですね。
そういうタイプの人は一人親方でやってる分には問題ないのですが、チームでやった途端に悲惨なことになるような気がします。
「よくわかんないけどうまく動かなくなった!お前が何かやったんだろ!コラ!」→自分のミスでした
みたいなのでPG間の人間関係に大きな亀裂が入った現場を何回か目にしたことがあります。

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

Re: デバッグの重要性。

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

プロでデバッガを使わない or 使えないプログラマーは知っています。
逆に面倒じゃないかと思ってました。
仕事でLinuxでGDBデバッグだけじゃなくリモートでDDDのデバッグ環境を整備したので欲しい人がいると聞いたら一人しかほしいと言われなかったのは驚愕でした。
みんな不便じゃ無いのか~。

ISLe
記事: 2650
登録日時: 14年前

Re: デバッグの重要性。

投稿記事 by ISLe » 12年前

デバッガを使わないひとは、ほっとけば直る(誰かが直してくれる)と思っているんじゃないでしょうかね。
仕方なくこちらで調べて修正箇所と修正方法を教えると「ついでに直してくれたほうが早いのに」って逆ギレされることも。

思考が完全なるウォーターフォール型なんでしょうね。
かつてはわたしにもあったのかもしれませんが、もはやどういう感覚かまったく分かりません。

質問掲示板にもたくさんいますよね。
直前の投稿しか見ないひとや直接の回答をしないことに逆ギレするひと。
最後に編集したユーザー ISLe on 2013年8月16日(金) 16:41 [ 編集 2 回目 ]

アバター
バグ
記事: 130
登録日時: 14年前

Re: デバッグの重要性。

投稿記事 by バグ » 12年前

現場で起こった原因不明なバグに、「早く直せオーラ」全開な人達(機械や制御担当、クライアント)に囲まれて、気が狂いそうになりながらデバッグすれば、嫌でも効率的な方法が身につきます。

一度、制御担当のミスなのにこちらのせいにされた挙句に「とっとと直せ!」と怒鳴られた事がありました。
散々調べて証拠見つけて突きつけてやった時はスカっとしましたw

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

Re: デバッグの重要性。

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

ハード屋とソフト屋の争いはネタ尽きませんね。
両方混じっている人なので両方の気持ちは分かるのですが、なかなかソフト側の言い分を信じてくれないって事は多いです。

【追記】ン十年前のネタですが、金融系で汎用機の演算系ハードに故障が生じた時の計算が狂った問題はハードとソフトで喧々諤々でしたよ。
当事者じゃなかったですが、担当じゃなくてよかった。

【補足】そういえば、Pentiumの浮動小数点演算にバグがあった事もありましたね。
「Pentium FDIV バグ - Wikipedia」
http://ja.wikipedia.org/wiki/Pentium_FD ... 0%E3%82%B0

> デバッガを使わないひとは、ほっとけば直る(誰かが直してくれる)と思っているんじゃないでしょうかね。

そう言う人もいますね。重症バグは私が頑張って直しました。
最後に編集したユーザー softya(ソフト屋) on 2013年8月16日(金) 23:02 [ 編集 2 回目 ]

アバター
へにっくす
記事: 634
登録日時: 13年前

Re: デバッグの重要性。

投稿記事 by へにっくす » 12年前

デバッグ方法を知らない人って結構いるのかもしれませんが、私はデバッグしない人をプログラマと呼びたくありませんね。。。
何で自分で作成したものを確認もせずに出せるんだろう?そこが不思議です。

昔と比べて、デバッグしやすい環境になっているのにね。
覚えるの面倒、じゃなくて覚えなきゃさらに面倒なんだよ、と教えてやりたい(^^;

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

Re: デバッグの重要性。

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

ゲーム系は力技な人を何人か見かけた事があります。そういう人は良いとこprintfデバッグです。
他の人ではGDBを使う人は使うんですが。
デバッガ満足に走らない機器(デバッガのスタブと通信手段がない)とか、ICEが高すぎて買えないとか、そう言う世界で生きてからってのはあると思います。
最後に編集したユーザー softya(ソフト屋) on 2013年8月17日(土) 22:51 [ 編集 1 回目 ]

アバター
へにっくす
記事: 634
登録日時: 13年前

Re: デバッグの重要性。

投稿記事 by へにっくす » 12年前

softya さんが書きました:デバッガ満足に走らない機器(デバッガのスタブと通信手段がない)とか、ICEが高すぎて買えないとか、そう言う世界で生きてからってのはあると思います。
あーそうですね
私もゲーム業界にいたころ、デバッガ環境をそろえるのにやたらと高価な機器を購入しなければ揃わないことが多々あったので、その事情は分かるつもりです。今でもそういうところはあるでしょうね。
だから、printfデバッグでもいいのです。それだってデバッグしてることに変わりは無いので。
それさえもせずリリースしちゃうところが怖いんですよね…
printfデバッグとかそういう簡易な方法もできない開発環境ってなら仕方がないかもしれないが、それって開発環境と言えるのか?と言いたい ^^;)
最後に編集したユーザー へにっくす on 2013年8月18日(日) 10:11 [ 編集 1 回目 ]

taketoshi
記事: 222
登録日時: 14年前

RE: デバッグの重要性。

投稿記事 by taketoshi » 12年前

タイミングバグと添え字バグは何度も経験しておるのですが

printfデバック方法は便利ですね。勉強になりました。SRPGづくりに導入します。
今まで変数確認をブレークポイントかDrawStringで直接描写していたので手間が省けます

アバター
へろりくしょん
記事: 92
登録日時: 14年前

Re: デバッグの重要性。

投稿記事 by へろりくしょん » 12年前

プログラムを何とか組めたけどデバッグできないって人は、そもそもプログラムを書いてると言わないと思いますよ。

言い換えると、習ったとおりにやったけど、思った通りにならない。 って事ですよね。
数学の問題で、教えられた通りに解いてみたけど、答えが違う。 って言ってるのと同じです。

だから、また教えて。 ってなるんですね。


自分でプログラムを書いていて、想像していた動作と異なると、なんでだろ? って普通は考えます。
コードを見直して、どこに誤りがあるのか探します。
特別に何かをしなくても、この時点ですでにデバッグです。

タイプミスとか単純なミスでさえ連発する人間様は意外とお馬鹿な生き物です。
プログラム書いてれば嫌って程に身に染みます。
だからデバッガは非常に重宝しますし、デバッグ法は自然と確立されてきます。

これを疎んでいるようでは、プログラマとは呼べません。

幸いにもこんな人にお目にかかった事はありませんが、実際にいたら恐怖どころの話ではありませんね。
独自手法のデバッグ法に絶対の自信を持っていて、デバッガを使わない。 とか、単にデバッガの使い方を覚えていない。 とかはともかく。

デバッグ出来ない人って、ただ単位が欲しいだけの学生ならいざしらず、仮にもプログラム書きを名乗るならあり得ないですね。
書いたプログラムを動かして、あれ? おかしいな? って思った次にどんな行動を取るのでしょうか。 戦慄を覚えます。