デバッグ
バグの位置を見つけたら、次のステップはバグの実際の理由を突き止めることである。これにはプログラムの他の部分を調べることが必要な場合がある。例えば、データのフィールドが間違っていたためにプログラムが停止したとする。この次のステップはフィールドが間違っていた理由を特定することであり、それがバグの真の発生源である。プログラムが不正なデータに対処できないこともバグとみなせると主張する者もいるが。
システムをよく理解していることはバグの原因をうまく特定するのに不可欠である。熟練したデバッガなら問題がどこに由来するのかを特定することができるが、システムに詳しい者だけがそのエラーの真の原因を的確に突き止めることができる。原因が、例えば入力データなど、システムの外部に在ることもある。また、正しいデータを間違った方法で扱っているなど、ロジック上のエラーもありうる。他の可能性としてはデータの与えられ方(値の組み合わせ、数など)が予期しないものであったり、不正な参照など様々なものがある。
バグの原因を突き止めたら、コード中の類似した箇所を調べて間違いが繰り返されていないかを確認するのが良い考えである。重複コードが多ければこれはより面倒な作業となる。エラーがはっきりとしたタイポであったら可能性は低いが、プログラマが設計や仕様を誤解したものであったのなら同じか類似した間違いが他で犯されている可能性がある。