デバッグに関するヒントとテクニック

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。 【元記事】 Debugging Tips and Tricks  2015/05/22 8:30 AM

残念ながらソフトウェア開発にバグは付きものであり、最初から不具合のないソフトウェアを作成しようと最大限の努力を払っていても、デバッガーで長時間作業をすることは避けられません。バグがあるのは確かに残念なことですが、たびたびのように手間をかけなくてもバグを発見することはできます。Visual Studio 2015 のデバッガーにはデバッグ担当者の方向けに充実した機能が備わっており、その機能を把握し使用方法を理解していれば、生産性を大幅に高めることができます。こうしたデバッグツールについて皆様によく知っていただこうと、私は「.NET 開発者向けのデバッグのヒントとテクニック」というテーマで 3 回お話をする機会がありました。そのビデオが公開されていますので、Microsoft Build カンファレンス (60 分、英語)Microsoft Ignite カンファレンス (75 分、英語)、そして最近の Visual Studio Toolbox (38 分、英語) をどうぞご覧ください。

ビデオよりも活字をお好みの方のために、私がお話しした内容の中でも主要な部分をこの記事でご紹介します。紹介するヒントの中には、Visual Studio 2015 の新機能と旧バージョンの Visual Studio の便利な機能の両方が含まれています。

注: 上記の 3 セッションではいずれも同一のデモを使用し、同様の内容について説明しています。どれか 1 つをご覧になる場合は、時間の短いものがお勧めです。

デバッグの開始

ほとんどの場合デバッグのセッションは [デバッグ開始] から始めますが、それ以外にも次のような始め方があります。

  • アプリケーションのエントリ ポイントからデバッグを開始する必要がある場合、デザイン モードでステップ オーバー (F10) またはステップ イン (F11) を使用すると、アプリケーションのエントリ ポイントに移動できるため ("マイ コードのみ" が有効な場合)、適切なソース ファイルで行を特定してブレークポイントを設定する必要がなくなります。
  • デザイン モードでコードをまったく編集しなかった場合は、デバッグを再開すると、デバッグが有効なままアプリケーションの実行をすばやく再開できます。これにより、[デバッグの停止] をクリックし、IDE がデザイン モードに戻ってから [デバッグ開始] を再びクリックするという手間が省けます。
  • ソリューション内で複数のプロジェクトが起動される場合、ソリューションに複数のスタートアップ プロジェクトを設定すると、プロジェクトごとにデバッグを有効または無効にして複数のプロジェクトを起動できます。これは、実行時に互いに依存関係にある複数のアプリケーション (クライアントとサーバーなど) を含むソリューションでデバッグ作業を行う場合に特に便利です。

clip_image002

実行の制御

デバッガーでソース コードの意図した位置まで実行する場合、下記のような機能を使用するとすばやく行えます。

  • 次に実行するステートメントを設定する機能では、既に実行済みのコードを再実行する場合も含め、次に実行するコードを制御することができます。この機能は、条件分岐をテストするときに意図したコード パスで条件を正しく満たすように入力を変更する必要がなくなるため便利です。
  • 特定の関数にステップ インする機能では、1 行のコード内で複数の関数が呼び出される際にどの関数にステップ インするかを選択できます。
  • カーソル位置まで実行する機能では、1 回限りのブレーク ポイントを作成できるため、後で設定を解除する手間が省けます。この機能はデバッグを開始するときでも、デバッグ中に特定の行まで実行するときでも使用できます。エディターのコンテキスト メニューまたはキーボード ショートカット (Ctrl + F10) から呼びします。
    • この機能は [呼び出し履歴] ウィンドウでも使用できます。呼び出し履歴の子フレームの実行がすべて完了すると、プログラムは一時停止します (必要な回数ステップ アウトした場合と同じように、選択した呼び出し履歴のフレームで停止することができます)。

clip_image003

データの検査

デバッガーで意図した位置まで実行したら、おそらくアプリケーションのデータを検査するでしょう。データの検査には次のような方法があります。

clip_image004

生産性の向上

これまで一部のユーザーの方から、デバッガーを使用するときの生産性を強化してほしいという強いご要望をいただいていました。私が実施したデモでは、これに関して次のような Visual Studio 2015 の機能強化についてご説明しました。

clip_image005

関連情報

ここまで説明した内容は、ビデオで紹介したことを簡単にまとめたものです。ご興味をお持ちになった方は、前述のいずれかの動画を視聴されることをお勧めします (ここにもリンクを記載しますのでこちらからどうぞ。Visual Studio Toolbox (英語)/Build (英語)/Ignite (最も詳細な内容です) (英語))。このほかにも、デバッガーに関する診断チームのブログ (英語) もご覧ください。

ご不明な点やご意見がありましたら、Visual Studio の Send a Smile 機能 (英語)MSDN フォーラム (英語)Twitter、またはページ下部のコメント欄までお寄せください。

image

Andrew Hall (Visual Studio 診断機能担当プログラムマネージャー) @AndrewBrianHall

Andrew Hall はマイクロソフトに 7 年間勤務し、入社当初から診断ツールを担当しています。現在のチームでは、デバッガー、プロファイラー、コード分析ツールの開発に携わっています。