Visual Studioで変数の中身がどうなっているか調べてみた

プログラムを作る場合、プログラム実行中に変数がどうなっているか調べたくなることがあります。Visual Studioにはデバッガという機能があって、変数の中身を見ることができます。 試した環境は下記です。

  • Visual Studio 2015 Express for Windows Desktop (C#)

  • Windows10

目次

  1. 変数に何が入っているか見たい
  2. プログラムの実行を意図的に中断する
  3. 変数の中身を見る
  4. 試してみた

変数に何が入っているか見たい

いろいろプログラムを書いていて実行してみると、自分が考えていたのと異なる結果が得られることがあります。そんなとき、変数の中身が見られると便利ですよね。 私の場合はよくこんな方法を使っていました。

  • プログラムの途中に、見たい変数の中身をメッセージボックスダイアログで表示させる。

  • 同じく、コンソールに出力させる。

  • テキストボックス(またはラベルやテキストブロック)をフォームにおいて、表示させる。

う~ん、いかにも素人ですね。 Visual Studio 2015 Expressを入れてみて(というかBasicからC#に切り替えたのを機に)画面をよく見てみたら、プログラムを中断したときに「ローカル」とかいうウィンドウに変数が表示されているじゃないですか。おお、これは便利。

プログラムの実行を意図的に中断する

変数の中身を確認するためにいちいち実行時エラーを起こすわけにもいかないので、意図的に実行を中断してみます。 Visual Studioでは「ブレークポイント」なるものを設定すると、ブレークポイントを設定した行の直前でプログラムが停止します。止めたい行でF9キーを押すと、その行の行頭がブレークポイントになります。 プログラムが実行されていってブレークポイントに達すると、自動的に実行が中断されます。なんだかインタプリタみたい。

変数の中身を見る

実行中断中に、デバッグメニューのウィンドウメニューの中の中段あたりに「ウォッチ」「自動変数」「ローカル」というメニューが並んでいます。これらを選択すると、変数の中身を確認するためのウィンドウが開きます。 170123-3-1 ウォッチの場合は、自分が見たい変数を指定します。 自動変数の場合は、停止した行とその前の行で使用されている変数が表示されます。 ローカルの場合は、停止したスコープの中のローカル変数が表示されます。

試してみた

こんなプログラムで試してみます。 170123-3-2 int b=1;の行でF9キーを押して、この行の行頭にブレークポイントを設定しました。 このプログラムを実行すると、変数aにGetLength()の結果が代入されたところでプログラムの実行が中断します。 そうしたら、各ウィンドウで変数の中身を見てみます。 まず「ローカル」ウィンドウですが、全ての変数が表示されています。まだ使用されていない変数も表示されます。 170123-3-3 次に「自動変数」ウィンドウですが、ブレークポイントを設定した行の変数bと、その前の行で使用されている変数aおよびsplittedが表示されています。 170123-3-4 そして「ウォッチ」ウインドウですが、名前のところにstrとcを指定しました。指定した変数が表示されます。 170123-3-5 いや便利ですね。 プロの人はもっといろいろなテクニックで使いこなしているのでしょうね。 メカの設計ではモニターを付けたり最終的な結果から途中経過を推定していくのですが、ソフトウェアの場合はこういうことができるんですよね。ちょっとうらやましい。

公開日

広告