dポイントプレゼントキャンペーン実施中!

C++に対する一般論で結構なのですが、再現性の無いバグが出た場合、
皆さんはまず最初に、何を調べたり、何を考えたり、
どのように行動したりしますか?

A 回答 (3件)

再現性の無いバグは時折、経験しますね。


基本的には一度出たものは必ず発生します。
経験から言うと対処しないと必ず発生し、後に痛い目に会いました。
「再現性の無い」というは以下のように考えています。
・開発者自身の想定外の使用方法/組合せ(但し、何れ起こる)
・システムの不安定により、想定外のタイミングで動作する
→例えば書き込みと読み込みのタイミングが逆転するなど・・
・想定外のデータ形式を処理してしまう
 ・・・などなど

対処するには次のようなことを心がけています。
・別のマシン(遅いPC)などで確認する
・起こりうる状態を考え、エラー回避(例外)対策を十分行う。
・エラーメッセージなどが捉えにくいときもありますが十分エラーメッセを検討する

時には勝手にリソースの内容が書き換えられてしまうなんていうのもありますから、小生も抜本的な対策はありません。
以上、何かの参考になれば幸いです。
    • good
    • 0
この回答へのお礼

別のマシンでやってみたら治まりました。
ありがとうございました。

お礼日時:2007/02/08 12:22

出ないときは、出し方を想定して故意に出してみます。


その具合を評価すれば見えてくることも多いですよ。
条件の一部が分からないので結果から発端の原因まで辿り着けない
場合もありますよね。
確立論で説明できる問題でも、発生頻度が数ヶ月に1回だったりす
ると検証する時間がとれないこともあります。
シリアル通信で3000万分の1程度でデータが崩れるという問題
に先日悩まされまして、問題は送信側にあることは分かっているの
ですがどうしても原因が分からないので、受信側で直前100回分
の受信データを保存して崩れを比較検出するようにしました。
元を絶てなくても最終段の出力に達するまでに破棄できればいいと
いう話もフィールドではよくあります。
    • good
    • 0
この回答へのお礼

別のマシンでやってみたら治まりました。
ありがとうございました。

お礼日時:2007/02/08 12:22

「再現性がない」と判断したのであれば、自分は放置します


ある程度調べて再現しないと判断したのであれば、それ以上調べるのは時間の無駄と考えるからです
というより再現しないならば、問題はないからです

ただし、「再現性はあるが、再現方法は判らない」状態であれば、調査します
その際は、やはり現象発生時と同じ状態を作り同じ操作を繰り返してみるといったところでしょうか
現象発生時と同じ状態とは、OS のシステムタイムだったり CPU に対する負荷状況であったり、そのプログラムを連続で動作させていた時間等です
兎に角、同じ状況を作ってそれでダメなら、ひたすら考え得る事をやるしかないというところでしょうか
正直、バグといっても色々あるので、何から攻めていくか判りません
もし何らかのメッセージが出てるならば、当然そこから調べていきます

頑張って下さい
    • good
    • 0
この回答へのお礼

ありがとうございます。

放置ですか・・・
とりあえず、別のマシンで実行したところ、
今のところ止まらないので、問題ないようですが・・・

>OS のシステムタイムだったり CPU に対する負荷状況であったり、そのプログラムを連続で動作させていた時間等

これは大変ですね。
このへんを解説しているHPなり本なりを紹介していただけますか?

お礼日時:2007/02/07 18:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!