デバッグを理解しよう!

[C#] デバッグを理解しよう!

※ 当サイトは広告を含みます。

ここではプログラミングで重要なデバッグを理解しましょう。

デバッグ

最初の頃に説明しましたが、デバッグとはプログラムを実行してテストすることです。
その中で不具合が見つかれば、修正と確認を繰り返し、プログラムとしての完成を目指します。

まともな会社ならデバッグの時間をしっかり確保してますが、ブラック企業やゴミプロマネが担当だと何故かデバッグ時間が無かったりします。
そんな時は時間内で適当にデバッグして作業を終えましょう。それでトラブルが起きるなら案件を管理してる側に才能が無いです。

りさ

潰そうブラック企業。

ビルドエラーとの違い

プログラムの不具合を探すという意味ではビルドエラーも似てますね。
どちらもプログラムを完成形に近づける作業ですが、この2つは何が違うのでしょうか。

まず、ビルドエラーで検出できるのは構文の誤りです。対してデバッグは処理が正しいか間違ってるかを確認する作業です。

要はビルドエラーは構文の正常性、つまり記述の正しさしか判断できません。
これはプログラムの処理(動作)が正しいかは、自動的に判断できないからです。

そして、このプログラムの動作上の誤りを見つけるのがデバッグです。普通にテストと呼ぶこともあります。

デバッグ実行

実際にサンプルコードを使ってデバッグを体験しましょう。
では、次のコードをデバッグ実行してください。ショートカットならF5です。


namespace Sample
{
  internal class Program
  {
    static void Main(string[] args)
    {
      int x = 10;
      int y = 30;
      int z = 50;

      int xy = x + y;
      int yz = y * z;
      int zx = z / x;

      Console.WriteLine($"xy={xy}, yz={yz}, zx={zx}");
    }
  }
}
りさ

黒い画面が一瞬だけ表示されて消えました。

管理人

それで正しいよ。デバッグ実行はプログラムの処理に問題がなければ、実行後にプログラムも終了するんだ。
でも、これだと何が起きたか分からないよね。それをブレークポイントって仕組みで解決するよ。

ブレークポイント

ブレークポイントとは、デバッグ実行の際に指定した位置でプログラムを一時停止できる機能です。
ちょっと分かりづらいかも知れませんが、次の画像を参考に同じ位置をクリックしてください。

ブレークポイント

クリックして赤い丸が付けば、ブレークポイントが正しく設定されてます。ちなみに、もう一度クリックすると解除できます。

このブレークポイントはプログラムを一時停止するので、処理に関係する行にしか設定できません。
なので赤い丸が付かない場合、その位置はプログラムの処理とは無関係と言うことです。

では、ブレークポイントを付けた状態で、改めてデバッグ実行してみましょう。

ブレークポイント停止

赤い丸に黄色い矢印が付いてプログラムが一時停止しました。
ちなみにプログラムもちゃんと起動してます。適当に Alt + Tab とかで探すと見つかります。

Tipsブレークポイントは条件(右クリックからメニューを選択して指定)を付けて止めることもできます。

ステップ イン / ステップ オーバー / ステップ アウト

ブレークポイントで止めてる状態で1番使う機能だと思います。これら3つはプログラムを進める機能です。
画面上のアイコンは使わず、殆どの場合でショートカット経由で利用します。

ステップ イン / ステップ オーバー / ステップ アウト

先程のブレークポイントで一時停止した状態で対応するキーを押してください。
そうすることでプログラムが1行単位で実行されて、処理を追うことができます。

他にもデバッグ中にF5で次のブレークポイントまで飛ばせます。
デバッグ作業で1番多いのは、この辺の機能を連打しながら進めて、順番に処理を確認することです。

りさ

もしかして地味?

管理人

そうだね。これ自分で作ったプログラムなら何ら苦にならないんだけど、人のコードをデバッグするのが苦痛なんだよね。
他の人は知らないけど、他人のコードって大半がイライラするし、本当にやりたくないから僕はテスター向いてないと思う。

変数の値を確認

デバッグ実行で一時停止してる場合、なんと変数の値を見ることができます。
よく使うのは自動変数ローカルですね。画面のどこかにいるので探してください。

変数の値を確認
管理人

他にもマウスで変数にカーソルを合わせるか、クイックウォッチって仕組みで特定の変数を監視できます。
大抵は自動変数とローカルを知っておけば何とかなりますよ。

りさ

変数の中身も見れるなんてIDEって凄いですね。

あとがき

今回伝えたのは一部の機能です。とりあえず、最低限これを知ってれば困らないのを書きました。
他にもIDEには色々な開発機能が付いてるので、気になる人は自分で調べてみましょう。

◆ C#に関する学習コンテンツ

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。