
No.4ベストアンサー
- 回答日時:
ありますあります。
自分で書いておきながら後でバグに気がついて「よくこれで今まで動いていたよな」と思う事も良くあります。
特にマシンやOSが変わったりすると(スタックの値やタイミングが変わるので)、この手のバグは発動(!)することが多いのですが、「いままで使っていたあのマシンではちゃんと動いていたので自分のプログラムには間違いがない」とか平然と言う人がいて、閉口することもしばしばあります。
原因の多くは他の回答者さんにあるとおり、初期化ミス(特に自動(スタック)変数)、マルチスレッドやシグナル処理におけるタイミング、バッファーオーバーラン、ですが、他にもシステムコールやライブラリ関数の仕様の読み間違え、もあります。
初期化ミスやバッファオーバーフローは、OSや機種が違うとメモリ配置が変わって、動くものが動かなくなったり、その逆になったりすることがあります。タイミングに起因するバグもOSが変わるとスケジューリングの微妙な違いでバグが出現したりします。ライブラリ関数も、機種やバージョンで微妙に仕様が違うことがあるので、それで引っかかることがあります。
No.6
- 回答日時:
ありますよ!
仕様書にはきちんと書いているんだけど、たまたま読み忘れて
コーディングをしてしまった場合。つまりテストケースからも
落ちてしまった場合に、きちんと動いた、ということはあります。
けど、結合テスト工程で欠落した部分が突如バグとして現れたりします。
No.5
- 回答日時:
> 間違っていて正常に動かないはずなのに、
> なぜか偶然正常に動くことってありますか?
正常に動作するかどうかわからない、あるいは特定のケースで誤動作するものが、(そのとき使用している範囲では)正しく動作することというのはよくあります。
しかし、正常に動かないはず(つまり確実に誤動作することが理論的に裏付けられている)ものが、誤動作する実行パスを通ったにも関わらず、正常動作することはあり得ません。
もっとも、正常に動かないはずのものが、自分が知らないうちに手直しされていた、というケースもありますから、それらも含めると可能性はゼロではありませんね。
> また、仮に偶然正常に動いているものがあるとすると、
> 何かをきっかけとして動かなくなることってありますか?
これは、正常に動かない原因と、正常に動いたかのように見えた原因によります。
No.3
- 回答日時:
良くあるパターンでは…
・初期値を設定していなかったのだけれど、0が設定されていて普段はきちんと動いているように見えた。
・逆に、初期値に0以外が設定されていて、判定文が素通りしていた。
・領域外にアクセスをしていたのだけれど、他の領域を食いつぶしていて動いていた。
・シビアなタイミングで競合が発生する。
・似たような変数名を使用していて、別のところで値を変更していた。
・公開したライブラリがグローバル変数を使用していて、違う関数で値を上書きされた。
こんなところでしょうか。
他にもまだまだあるとは思いますが、やはりデバッガの偉大さを思い知らされる時でもあります。
No.1
- 回答日時:
スレッドの関係、メモリの関係などなど、コードを読んでるだけでは見つからないバグはいくらでもあります。
”偶然”まともに動いているプログラムがほとんどかもしれませんね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリが不足しています(VBA)
-
if ( a & b == b )
-
C言語初心者です。debug assert...
-
ファイルマッピング関数で失敗
-
エクセルのメモリ使用状況/Appl...
-
ルネサスマイコン(R8C) ビルド...
-
エクセルVBA 大容量CSVファイル...
-
関数内でVirtualAllocで確保し...
-
逆コンパイルと逆アセンブルの...
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
アプリケーションが終了するま...
-
COBOLのS9タイプからXタイプへ...
-
.NetのBackgroundWorkerクラス...
-
スレッドにて同一メモリの書き...
-
プロセスIDからウィンドウハ...
-
openGLで物体を半透明にして表...
-
フレームワーク「4.8.1」で、[S...
-
OSPFでプロセスを分ける意義に...
-
CWnd::OnTimerのスレッドの取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メモリが不足しています(VBA)
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
エクセルVBA 大容量CSVファイル...
-
メモリのセグメント違反の解決...
-
エクセルのメモリ使用状況/Appl...
-
「ヒープサイズの設定」て何?
-
【C言語】再帰が時間がかかる...
-
バッチファイルでの実行EXEのメ...
-
ReadEventLogについて
-
メモリを解放しないとどうなる?
-
LoadLibraryしたらFreeLibrary
-
C言語における再帰呼び出しの...
-
EXCEL-VBAにてADOのレコードセ...
-
メモリ不足
-
クリスタルレポートでメモリ不...
-
Bitmapを重ね合わせる方法
-
これて逆じゃないですか?
-
ルネサスマイコン(R8C) ビルド...
-
closeとメモリの開放について
おすすめ情報