開発の基本「デバッグ」、VisualStudioでのデバッグテクニック

開発の基本「デバッグ」、VisualStudioでのデバッグテクニック

コードを書き終わったらプログラム完成!とするのは危険です。
プログラムは様々な要因から意図しない動作をしがちなので、
必ず動作確認をするべきです。
今回はそんな動作確認とそれによる修正「デバッグ」のお話です。

デバッグとは?

「de(取り除く)」+「bug(虫、プログラムの欠陥)」の語源の通り、
デバッグはバグを取り除き想定通りの動作に修正することです。

基本的には動作させた結果やログとして出力させた内容を見て、
誤動作の原因を特定していくことになりますが、
VisualStudioやEclipse等の多くの開発環境には、
このデバッグ作業を効率よく行うための「デバッグモード」機能が備わっています。
この機能を使いこなすことも、今のプログラミングでは必須級のスキルです。
開発環境によって言葉に差異があったり機能に違いがあるかもしれませんが、
今回はVisualStudioを例にデバッグモードで何ができるかをまとめます。

デバッグモードの基本

なぜデバッグモードでデバッグを行うと効率が良いかと言うと、
処理の流れやデータの状況が目で見えるようになるからです。

一番簡単な使い方としてはブレークポイントを設定してからのデバッグ実行です。
ブレークポイントを設定した処理(コードの行)で処理が一時停止するようになるので、
データの状況を確認したい部分で止めて様子を見たり、
分岐が想定通りに動作しているかを確認したりすることで、
素早くバグを見つけることができます。

これだけでもほとんどのバグは見つけられると思いますが、
それでも見つけられない場合やもっと細かく処理を追いたい場合のために
便利な機能を紹介します。

デバッグモードの応用

・ステップ実行
ステートメント(処理、コードの行)ごとに動作を止められます。
操作が少しややこしいですが、ざっくり説明でこんな感じです。
ステップイン……(関数内も数えて)次の行まで処理
ステップオーバー……(関数内は数えずに)次の行まで処理
ステップアウト……今いる関数から出るまで処理

・次の処理を指定 & 変数の値を変更
次に処理する行を指定して戻ったり途中の処理を飛ばしたりできます。
デバッグ中に変数の値を変更できる機能と合わせて使うことで、
パターンがあるような処理でもサクサク動作を確認できます。

・ブレークポイントをもっと活用
ループの中を調べたい時には工夫をしてあげましょう。
(そのままだとループする度に繰り返し止まって不便です)
止まる条件を指定したり(例:変数の値が○○の時だけ止まる)、
止まらずに実行回数をカウントさせたり、
止まらずに指定した処理をさせたり(例:変数の値をコンソール画面に書き出し)、
ブレークポイントだけでも多機能なのです。

まとめ

コードを書くのが速いのも素晴らしいですが、
手際よくデバッグができるのも同じくらい褒められるべき才能です。
バグを見つけたらラッキーと思って、
タイムアタック感覚で探すのが技術力アップに良さそうですね。