デバッグ(Debug)

デバッグ(Debug)とは、プログラムに潜む誤りを見つけ出し、原因を突き止めて直す作業のことです。誤りのことを「バグ(虫)」と呼び、それを取り除くという意味からこの名が付いています。

現実世界に例えると、デバッグは水漏れの箇所を探す作業のようなものです。床が濡れているのは分かっても、漏れているのは別の階かもしれません。濡れた場所を拭くだけでは直らず、水の道筋をたどって元栓を見つける必要があります。

テストとの違い

項目 テスト デバッグ
目的 誤りがあるか調べる 誤りの原因を直す
始まり 作り終えたあと 誤りが見つかってから
成果 不具合の報告 修正されたプログラム
担当 専門の担当者も ほぼ作った本人

「バグ」という言葉の由来

語源には有名な逸話があります。初期のコンピューターが誤動作した際、内部に虫が挟まっているのが見つかり、それを取り除いた記録が残っているという話です。ただしこの言葉自体は、機械の不具合を指す用語としてそれ以前から使われていました。

まず「再現させる」

作業の第一歩は修正ではありません。同じ手順をなぞれば必ず同じ誤りが起きる、という状態を作ることが出発点です。ここができていないと、直したつもりでも本当に直ったのか確かめようがありません。再現できれば、半分は解決したようなものだといわれます。

範囲を半分ずつ狭めていく

原因を探すときの定石があります。全体を眺めるのではなく、怪しい範囲を半分に区切り、どちら側で起きているかを確かめて、また半分に絞るという進め方です。この繰り返しなら、大きなプログラムでも少ない手数でたどり着けます。

デバッガという道具

専用の道具があります。指定した行でプログラムを一時停止させ、その時点での値を覗いたり、一行ずつ進めたりできる仕組みです。頭の中で処理を追うより確実で、思い込みによる見落としを防げます。開発用のソフトにはたいてい備わっています。

ログを出して追う

道具が使えない場面もあります。すでに動いているシステムや、手元で再現しない不具合では、処理の途中経過を記録として書き出させ、あとから読み解くやり方を取ります。何をどこで記録するかの設計が、そのまま調査の速さを左右します。

直したつもりが別の誤りを生む

気をつけたい点です。その場しのぎの修正は、思わぬところに影響して新たな不具合を招きます。症状だけを消すのではなく、なぜそうなったかを理解してから直すこと。そして直したあとは、周辺が壊れていないかを確かめる作業がセットになります。

詰まったら手を止める

経験則として知られていることがあります。行き詰まったときは、いったん離れる、他人に状況を説明してみる、前提を疑い直す。説明しようとした途端に自分で気づく、ということが実際によく起こります。長時間にらみ続けるのは、たいてい遠回りです。

あわせて知っておきたい用語

  • バグ
    プログラムに潜む誤りや不具合のことです。
  • デバッガ
    プログラムを止めて中身を調べる道具です。
  • ログ
    処理の経過を記録として書き出したものです。
  • リグレッションテスト
    修正で他が壊れていないか確かめる試験です。

コメント

タイトルとURLをコピーしました