ものえおさむ

これを知ってれば大丈夫? - よく使われる VisualStudio IDE のコードデバッグの機能

2008-08-27 17:17:00

はじめに
このブログでは、"Windows アプリケーションってどう作るのかよくわからない" といったプログラマ向けに Visual C# 2008 Express Edition (無償) を使用した Windows アプリケーションに作り方について説明しています。
Visual C# 2008 Express Edition (無償) の入手方法については
この記事 を、プロジェクトのコンパイル方法については この記事を参照してください。

今回は Visual C# 2008 Express Edition の IDE (Integrated Development Environment : 統合開発環境) のデバッグ機能について書きたいと思います。

ひとくちに "デバッグの機能" と言っても、 Visual Studio IDE には目的やデバッグするアプリケーションの形態に合わせて、様々なデバッグ機能が用意されています。

Visual Studio でのデバッグ』
http://msdn.microsoft.com/ja-jp/library/sc65sadd.aspx

今回はその中でもコードをデバッグする際に一般的に使用頻度が高い、以下の機能について紹介します。

・デバッグ実行
・ブレークポイント
・イミデイトウィンドウ
・ウォッチウィンドウ
・ローカルウィンドウ
・呼び出し履歴

文章で説明するのもなかなか分かりづらいと思いますので、時間ある方は以下の手順でデバッグ機能を検証するためのプロジェクトを作成してみてください。

デバッグ機能検証プログラム作成手順
---------------------------------
1. Visual C# 2008 Express Edition を起動
2. メニュー[ファイル] から [新しいプロジェクト] を選択
3. [新しいプロジェクト] ダイアログボックスが表示されるので、[テンプレート] リストビューから [Windows フォーム アプリケーション]を選択
4. フォームのデザインビューが表示されるので、フォームに以下のように textBox コントロールを 2 つと、button コントロールを 1 つ配置

5. フォーム上のコントロール [button1] をダブルクリックしてコード編集画面を表示
6. イベントハンドラ button1_Click の内容を以下のように記述

(イベントハンドラ button1_Click のコード)

private void button1_Click(object sender, EventArgs e)
{
  int a = int.Parse(textBox1.Text);
  int b = int.Parse(textBox2.Text);
  string c = calcDiv(a, b).ToString();
  MessageBox.Show(c);

}

7. calcDiv 関数を以下のように記述

(calcDiv 関数のソースコード)

private int calcDiv(int a, int b)
{
  int c = a / b;
   return c;
}

全体のコードは以下のとおりです。

(全体のコード)

using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace myDebug
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int a = int.Parse(textBox1.Text);
            int b = int.Parse(textBox2.Text);
            string c = calcDiv(a, b).ToString();
            MessageBox.Show(c);

        }

        private int calcDiv(int a, int b)
        {
            int c = a / b;
            return c;
        }

    }

 

デバッグ機能の検証
==================
ここからは前の手順で作成したアプリケーションを使用して、Visual Studio IDE のデバッグ機能を実際に使ってみたいと思います。

デバッグ実行
-------------
"デバッグ実行" とは、作成したプロジェクト(アプリケーション)を IDE 内でデバッグモードで実行することです。

プロジェクトをデバッグモードで実行すると、プロセスにデバッガがアタッチされ、各種デバッグ機能を使用することができます。

以下の手順で、実際にプロジェクトを動作させて検証してみてください。

なお IDE の状態は、前出の手順で作成した検証用アプリケーションのプロジェクトが開かれている状態を前提としています。

手順
1. メニュー [デバッグ]から [デバッグ開始]を選択
  もしくは [F5] キーを押下

2. アプリケーションのフォームが表示されるので、フォーム上の各テキストボックスの値を以下のように入力し、ボタン [button1] をクリック
   textBox1 : 1
  textBox2 : 0

プロジェクトがエラーの発生場所で停止し、以下のようなエラーの内容を示すメッセージボックスが表示されます。

(例外を示すメッセージボックス)

エラーメッセージボックス中の [詳細の表示]をクリックすると、例外の内要が表示され、[例外の詳細をクリップボードに追加]リンクをクリックすると、文字通り例外の内容がクリップボードにコピーされます。

エラーメッセージボックスの閉じるボタン([X]) をクリックし、コード編集画面を見ると、エラーの発生箇所が黄色い帯でマークされています。

そのマーク内の変数にマウスポインタを乗せると、変数の内容が確認することができます。

(エラーの発生箇所の表示)

変数がオブジェクトの場合は、各プロパティの内容がツリー状に表示されます。

デバッグ実行を終了するには [Shift] + [F5] キーを押下するか、ツールバーの [■]([デバッグの停止])ボタンをクリックしてください。

ブレークポイント
--------------
デバッグ実行時に、プロジェクトを任意の位置でブレークされるにはブレークポイントを設定します。

ブレークポイントの設定するには以下の 3 つの方法があります。

1. カーソルを任意の行に移動し、メニュー [デバッグ] から [ブレークポイントの設定/解除]を選択
2. カーソルを任意の行に移動し、[F9] キーを押下
3. 任意の行の、コード編集画面の左端の灰色の部分をクリック

(※) Visual Basic ではその他に "Stop ステートメント" を使用することができます。

実際にプロジェクトを動作させてブレークポイントの動作を確認してみましょう。

手順は以下のとおりです。

手順
1. button1_Click イベントハンドラ内の以下のコードの位置にカーソルを移動し [F9] キーを押下
ブレークポイントを示す赤い帯がつくことを確認してください。

(ブレークポイントが設定されたことを表す赤い帯)

2. メニュー [デバッグ]から [デバッグ開始]を選択
  もしくは [F5] キーを押下

3. アプリケーションのフォームが表示されるので、フォーム上の各テキストボックスに適当な数値を入力入力し、ボタン [button1] をクリック

プロジェクトがブレークポイントを設定した位置で停止し、コード画面が表示されるのを確認してください。

この状態で [F11] キーを押下すると、プログラムコードを一行ずつ実行させることができます。(ステップ実行)

[F5] キーを押下すると、引き続き実行が継続されます。ステップ実行途中のループ処理などは、ループ処理の後にもブレークポイントを設けて、[F5] キーで飛ばしてしまうと作業が楽になります。

[イミディエイト]ウィンドウ
---------------------
[イミディエイト]ウィンドウを使用すると、デバッグ実行中に変数の内容や、メソッドの実行などを別ウィンドウで実行し確認することができます。

実際にプロジェクトを動作させて[イミディエイト]ウィンドウの動作を確認してみましょう。

手順は以下のとおりです。

手順
1. 前出の "ブレークポイントの検証手順" の 1 から 3 を行い、ブレークポイントで実行を停止

2. メニュー[デバッグ] から [ウィンドウ] - [イミディエイト] を選択

3. [イミディエイト]ウィンドウ が表示されるので以下のように入力し、[Enter] キーを押下して結果を確認

?a ([Enter] キーを押下)

?a+b ([Enter] キーを押下)

?calcDiv(10,2) ([Enter] キーを押下)

変数の内容、2 つの変数の演算の結果、メソッドの実行結果が [イミディエイト ウィンドウ] に表示されるのを確認してください。

ウォッチウィンドウ
----------------
[ウォッチ] ウィンドウではデバッグ実行中に、特定の変数の内容を監視したり、変数の値を変更したりすることができます。

実際にプロジェクトを動作させて[ウォッチ]ウィンドウの動作を確認するには、以下の手順を実行してください。

手順
1. 前出の "ブレークポイントの検証手順" の 1 から 3 を行い、ブレークポイントで実行を停止

2. 変数 c の上にマウスポインタを乗せて右クリックし、表示されたショートカットメニューから [ウォッチ式の追加] を選択

3. 画面に [ウォッチ] ウィンドウが表示されているはずなので、表示内容を確認しながら [F11] キーを押下してステップ実行

コードの実行が進むたびに [値] フィールドの内容が変化することを確認してください。

4. 再度実行し、変数 a をウォッチ式に追加

5. [ウォッチ] ウィンドウ内の変数 a の [値]フィールド上でマウスの右ボタンをクリックし [値の編集]を選択

6. [値] フィールドの値が編集可能状態となるので、任意の数値を入力

アプリケーションを実行し、処理結果がアプリケーションの UI から入力された数値ではなく、[ウォッチ]ウィンドウで入力したものに変わっていることを確認してください。

[ローカル]ウィンドウ
-------------------
[ローカル]ウィンドウでは、ステップ実行中のスコープの範囲内にあるすべての変数の内容(※)を確認することができます。
(※)正確には "現在のコンテキストに対してローカルな変数"の内容

実際にプロジェクトを動作させて[ローカル]ウィンドウの動作を確認するには、以下の手順を実行してください。

手順
1. 前出の "ブレークポイントの検証手順" の 1 から 3 を行い、ブレークポイントで実行を停止

2. メニュー[デバッグ] から [ウィンドウ] - [ローカル] を選択

3. [ローカル] ウィンドウが表示されるので以下のように入力し、[F11] キーを押下してステップ実行を開始

[ローカル] ウィンドウに現在のスコープにあるすべての変数の内容が表示されているのを確認してください。

([ローカル]ウィンドウに表示されたローカル変数の値)

[呼び出し履歴] ウィンドウ
---------------------
[呼び出し履歴] ウィンドウを使用すると、現在呼び出し履歴にある関数呼び出しやプロシージャ呼び出しを表示できます。

呼び出し履歴を確認できることはもちろん、そのコード位置へジャンプすることもできるので、他人の作ったアプリケーションの処理の流れを確認する時などに便利です。

実際にプロジェクトを動作させて[呼び出し履歴]ウィンドウの動作を確認するには、以下の手順を実行してください。

手順
1. 前出の "ブレークポイントの検証手順" の 1 から 3 を行い、ブレークポイントで実行を停止

2. メニュー[デバッグ] から [ウィンドウ] - [呼び出し履歴] を選択

3. [呼び出し履歴] ウィンドウが表示されるので、[F11] キーを押下してステップ実行を開始

calcDiv 関数内にステップインした際に[呼び出し履歴]ウィンドウにレコードが追加されるのを確認してください。

また、ひとつ前の履歴の上でマウスの右ボタンをクリックし、表示されたシュートカットメニューから [ソースコードへ移動]を選択し、目的のソースコードが表示されるのを確認してください。

([呼び出し履歴] ウィンドウから [ソースコードへ移動] メニューを選択したところ )

今回は .NET アプリケーションのコード デバッグ時に、一般的によく使用される VisualStudio IDE のデバッグ゜機能について紹介させていただきました。

なお、各機能の詳細な情報については以下のドキュメントをご参照ください。

方法 : 実行を開始する』 (デバッグ実行)
http://msdn.microsoft.com/ja-jp/library/fzbdb826.aspx

ブレークポイントとトレースポイント
http://msdn.microsoft.com/ja-jp/library/ktf38f66(VS.80).aspx

[イミディエイト ウィンドウ]
http://msdn.microsoft.com/ja-jp/library/f177hahy.aspx

方法 : デバッガ内で式をウォッチする』 ([ウォッチ] ウィンドウ)
http://msdn.microsoft.com/ja-jp/library/0taedcee.aspx

[ローカル] ウィンドウの使用方法
http://msdn.microsoft.com/ja-jp/library/aa290703(VS.71).aspx

方法 : [呼び出し履歴] ウィンドウを使用する
http://msdn.microsoft.com/ja-jp/library/a3694ts5.aspx

 

次回は、あたりまえ過ぎてだれも書かないコードデバッグの手順について書きたいと思います。

ではまた。

※マイクロソフト社員のコミュニティ参加について

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]