【Visual Studio C# デバッグ入門 】変数値の確認方法を徹底解説

本ブログでは初学者向けに、デバッグ時の変数値を画面上で確認方法を紹介します。

変数値の確認方法は使用場面や目的に合わせて様々な方法があります。適切な方法を使用する事で効率的なデバッグが可能となります。

※デバッグ時はDebugモードで実行して下さい。
※Visual Studio 2020 Version 17.14.2 を使用

ブレーク時に値を確認する方法

マウスホバーで確認

変数にマウスを合わせると現在の値をポップアップで表示してくれます。下記の例では、変数「Txt_a」の値は”10″。コレクションやオブジェクトの場合、展開して内容も確認できます。

  • 用途例
    • 変数や式の現在値をすばやく確認したい
    • プロパティやフィールドの中身をドリルダウンで展開して確認したい
  • 変数値確認手順
    • 変数にマウスを合わせる
  • ポップアップのピン止め
    • ポップアップ左側の▷をクリックすると、ポップアップをピン止めする事が可能です。ピン止めしておけば、次回実行時の値もそのままで確認できます。

QuickWatch(クイックウォッチ)

デバッグ中に変数や式の評価結果を一時的に詳しく確認できるウィンドウです。特に複雑な式やオブジェクトの内容をじっくり調べたいときに便利なウィンドウです。

  • 用途例
    • 構造体・クラスなど複雑なオブジェクトの中身を展開表示で確認
    • 条件式やプロパティチェーンなどの式を即時評価
  • QuickWatch を開く手順
    • ①変数や式を選択して右クリック →「クイックウォッチ」
    • ②メニュー [デバッグ] → [ウィンドウ] → [クイックウォッチ…] 等

①の関数呼び出しを選択 → 「右クリック」→「クイックウォッチ」で結果が表示

ローカルウィンドウ(スコープ内変数値の確認)

現在のスコープ内で定義されているすべてのローカル変数を一覧で確認できるウィンドウです。

  • 用途例
    • 現在スコープ内の変数を一括で確認したい
    • ループ中・条件分岐中の変数の動きを追跡
  • ウィンドウ表示手順
    • ブレーク中 → メニュー「デバッグ」→「ウィンドウ」→「ローカル」

Watchウィンドウ(任意の式・変数を登録)

監視したい変数や式を追加し、値の変化を継続して監視できるウィンドウです。

  • 用途例
    • 重要な変数やオブジェクトの集中監視
    • 値の変化を逐次確認
    • スコープをまたいでの監視
  • ウィンドウ表示手順
    • ブレーク中 → メニュー「デバッグ」→「ウィンドウ」→「ウォッチ」→「ウォッチ1~4」
    • ①ウォッチしたい変数を入力
    • ②ウォッチウィンドウの切り替え

自動変数ウィンドウ(最近使われた変数)

現在および直前の行で使われている変数を自動で表示するウィンドウです。

  • 用途例
    • カーソルのある行付近で「使用」「代入」「参照」された変数の確認
    • 「関係のない変数」の表示にデバッグ作業を妨げられたくない 等 etc.
  • ウィンドウ表示手順
    • ブレーク中  → メニュー「デバッグ」→「ウィンドウ」→「自動変数」

■現在ブレーク中の変数「b」と直前の変数「a」が表示されています。

イミディエイトウィンドウ(その場で式を評価)

対話的にコマンドや式を入力できるウィンドウです。C# の式やメソッド呼び出し、変数参照などをリアルタイムで実行して結果を確認したり、値の変更やオブジェクト操作も可能です。

  • 用途例
    • デバッグ中に任意の変数やプロパティの現在の値を確認
    • 変数の値をその場で変更して動作確認が可能
    • 計算式(例:a + b、list.Count > 0など)の評価 等 etc.
  • ウィンドウ表示手順
    • ブレーク中 → メニュー[デバッグ] → [ウィンドウ] → [イミディエイト]

イミディエイトウィンドウでは ? をつけなくても構いませんが、

  • 結果を見たい → ? をつける
  • 単に処理・代入だけしたい → つけない

というルールで使い分けると良いでしょう。

コマンドウィンドウ

デバッグ中や開発中に Visual Studio のコマンドやデバッグ機能を実行するための特別なインターフェースです。

デバッグ中の変数値の確認やコード操作をコマンド形式で実行できます。コマンドを使わず変数値の確認用として使用するならば、イミディエイトウィンドウで十分でしょう。

  • 用途例
    • 現在の変数値の表示やメソッド呼び出しを実行(イミディエイトウィンドウと似た使い方)
    • コードの検索・移動、マクロ実行
    • Build.Solution や Debug.Start などの IDE コマンドを直接実行
  • ウィンドウ表示手順
    • メニュー「表示」→「その他のウィンドウ」→「コマンドウィンドウ」

■コマンド「Debug.Start」でデバッグを開始し、変数の値を確認

プログラム動作中に値を確認する方法

Console.WriteLine() で出力

Console.WriteLine() は、C# において標準出力(通常はコンソール画面)に文字列や数値などを出力するためのメソッドです。

開発中のデバッグやログ出力、ユーザーへの情報表示など幅広く使われます。

  • 用途例
    • デバッグ出力
    • 開発初期段階での簡易ログ記録 等 etc.
  • 表示の仕方
    • Console.WriteLine(値または文字列);

■下記はループを100回繰り返し、ループカウンタの2倍の値をConsole.WriteLine()で出力しています

■Console.WriteLine()の出力結果

System.Diagnostics.Debug.WriteLine()

デバッグ中に出力ウィンドウへメッセージを表示するために使用します。

Console.WriteLine() と異なり、GUIアプリケーションや WinForms、WPF のような環境でもコンソールを開かずに出力確認が可能です。

  • 用途例
    • デバッグログとして変数値や処理の流れを等を出力
    • 条件分岐や例外の追跡 等
  • 表示の仕方(Debug.WriteLine() の出力は「出力ウィンドウ」に表示)
    • アプリを「デバッグモード」で実行(F5)
    • メニュー → 表示 → 出力(または Ctrl + Alt + O) 等

■System.Diagnostics.Debug.WriteLine()のコード

■「デバッグ実行」で、出力ウィンドウへメッセージを出力

Trace.WriteLine()

デバッグモード/リリースモードの両方で、出力ウィンドウにメッセージを表示します。

  • 用途例
    • システム全体の挙動をトレース(追跡)
    • リリースビルドでもトレースしたい
  • 出力ウィンドウ(デフォルト)
    • アプリを「デバッグモード」で実行(F5)
    • メニュー → 表示 → 出力(または Ctrl + Alt + O) 等

■Releaceモードでビルド

■デバッグ実行

まとめ

デバッグ時の変数値を画面上で確認する方法を色々と紹介してきましたが、これらの方法は、「いつ」「どこで」「何のために」変数の値を確認したいかという目的に応じて、選び分けることが大切です。

  • 特定の変数や式を継続的に追跡したい → ウォッチ/自動/ローカルウィンドウ
  • 画面で直接見たい → Console.WriteLine(), Debug.WriteLine(), Trace.WriteLine()
  • 実行中にその場で調べたい → イミディエイトウィンドウやウォッチウィンドウ

Visual Studioは可視化・監視だけでなく、実行中にその値を変更することまで可能です。これを活用できるようになると、バグの発見・解決スピードが格段に向上し、より安定したアプリケーション開発が行えるようになるでしょう。

タイトルとURLをコピーしました