デバッグ
一般的に言って、デバッグは面倒で退屈な作業である。実際の作業ではプログラマのデバッグに関するスキルがおそらく最も重要な要素となるが、ソフトウェアのデバッグの難易度は使用するプログラミング言語やデバッガなどのツールによって大きく左右される。デバッガを使うとプログラムの実行について観測、停止、再開、速度を落としての実行、メモリ中の値の変更が行え、さらには時間を巻き戻すことさえ可能な場合がある。また、デバッグ作業を行う人のことを指してデバッガと呼ぶこともある。
一般的に高級言語―例えばJava―でのデバッグはより簡単である。なぜなら例外処理などの機能が使え、異常なふるまいの原因となっている箇所を特定するのがより簡単となるからである。低級言語、例えばC言語やアセンブリ言語では気づかないうちにメモリ破壊(不正なアドレスへのアクセスやメモリアロケーションミスなど)を引き起こすことがあり、問題がどこから生まれているのか突き止めるのが困難なことが多い。そのような場面では高度なデバッグツールが必要とされる。
状況によっては、特にソース・ツリーが巨大でウォークスルーが困難な場合など、言語に特化した汎用ソフトウェアツールが非常に役立つことがある。
デバッグ作業は対象によってさまざまであるが、一般的なデバッグの原則を見つけることができる。本節ではソフトウェアのデバッグについて扱うが、ハードウェアについても適用できることは多い。
デバッグの基本的なステップは以下である。
バグの存在を認識する
バグの発生源を分離する
バグの原因を特定する
バグの修正方法を決定する
修正し、テストする