たとえるなら
水漏れの原因探しです。天井のシミ(症状)を見つけても、水がどこから漏れているのか(原因)はすぐにはわかりません。配管を一本ずつたどって漏れ場所を突き止めるのが一番大変で、見つかってしまえば直すのは早いことが多いのです。
もう少しくわしく
デバッグ(debug)は「bug(虫)を取り除く」という意味で、バグの原因を突き止めて修正する作業です。プログラムを書く仕事と聞くと新しいコードをどんどん書く姿を想像しがちですが、実際のエンジニアは思いどおりに動かない原因を探す時間にかなりの割合を使っています。
デバッグはよく探偵の仕事にたとえられます。まず「どんな操作をすると、何が起きるのか」を正確に再現し(現場検証)、プログラムが残す記録(ログ)や途中経過を調べて容疑者を絞り込み(捜査)、原因の一行を特定します(犯人逮捕)。症状が出たり出なかったりするバグは特に手強く、再現させるだけで何日もかかることもあります。
だからこそ、不具合を報告するときは「どの画面で、何をしたら、どうなったか」を具体的に伝えることがとても喜ばれます。エンジニアでなくても、良い報告をするだけでデバッグの時間を大きく縮められるのです。
現場での使われ方
「いまデバッグ中なので、ちょっと待ってください」
不具合の原因を調査している最中、という意味。集中が必要な作業なので、そっとしておくのが優しさです。
「再現手順がわかれば、デバッグが一気に進みます」
その不具合を意図的に起こせる操作手順がわかれば、原因の特定がぐっと早くなる、ということです。
よくある質問
デバッグとテストの違いは何ですか?
テストは「バグがないか確かめる」作業、デバッグは「見つかったバグの原因を探して直す」作業です。テストで見つけて、デバッグで直す、という順番の関係になります。