プログラムに混入した誤り(バグ)を見つけ出して、正しく修正することです。「バグを取る」ことから「DeBug」と呼ばれます。
デバッグをサポートするソフトウェアを、デバッガと呼びます。また、デバッグを行う人のことを指して、デバッガと呼ぶこともあります。プログラムの開発環境の多くには、デバッガが付属あるいは内蔵されています。
バグは、プログラムのソースコードに含まれた何らかのミスです。プログラマーの入力ミスのような些細なものもありますし、仕様の把握ミスや、アルゴリズムの選定や実装のミスなど、さまざまな原因が考えられます。
バグは、プログラムの実行中になんらかのエラーが発生するような、分かりやすいものに限りません。表示物の位置がずれているというように、致命的とはならず、下手をすれば誰も気が付かない程度のものもありえます。ともかく、プログラムの本来の仕様と異なっているものがバグであるといえます。そのため、プログラムの仕様がきちんと定められていなければなりません。
デバッグ作業は、まずバグがあることを認識することから始まります。バグが見つかったとしても、その根本原因はまったく別のところにあるかもしれません。問題が表面化した場所を場当たり的に修正するのではなく、根本原因を突き止めて修正しなければなりません。
修正の仕方も検討が必要です。すでに問題なく動作している部分もあるのですから、可能な限り、ほかの箇所に影響が出ないような修正方法が望まれるためです。最悪の場合、バグの修正によって、新たなバグを作り込んでしまう可能性があります。これはエンバグと呼ばれます。
バグを修正したら、正しい動作になっていることや、エンバグを起こしていないかどうかを確認するために、テストを行います。
開発環境には、デバッガが付属・内蔵されていることがあります。
代表的な機能として、プログラムの実行を、任意の位置で一時停止させるブレークポイントがあります。実行時に、ソースコード上のある位置を通過しているかどうかを確認したり、その時点での変数やメモリの状態を確認したりできます。
Visual Studio のデバッグ関連機能について、こちらで紹介しています。
プログラミング言語にも、デバッグの手助けをする機能が含まれていることがあります。
たとえば、C言語の assertマクロ(C言語編第30章)は、「実行時に処理がこの位置に到達したとき、こうなっていなければならない」という想定を記述するものです。実行時にその想定どおりになっていなかったら、実行を停止させることができます。たとえば、「変数 a の値が 0 でなければならない」といった想定を記述します。
この機能は一般には、アサート(アサーション)と呼ばれます。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |