|
|
解説
ASP.NETで学ぶVisual Studio .NETの魅力
第6回 開発効率向上の肝 デバック機能とマクロ機能
山田 祥寛
2003/09/17
|
|
|
ステップごとの処理を確認する
「ステップイン/ステップオーバー/ステップアウト」
ブレークポイントがある特定の個所に限定して(あるいは条件を明確に想定した上で)、状態を監視するための手法であるとするならば、こちらは問題の個所が絞りきれていない場合に変化や状態の経過を目視するために用いる手法であるといえよう。ブレークポイントを使って特定個所でブレークさせておき、そこからステップ実行するという使い方が通例である。
ステップ実行は大きく3つに分類される。
種類 |
概要 |
ショートカットキー |
ステップイン |
コードを1行単位で実行 |
[F11] |
ステップオーバー |
実行される命令として、関数(メソッド)内に入らないことを除くと、ステップインと同様 |
[F10] |
ステップアウト |
現在の処理が関数(メソッド)内である場合に即座に呼び出し元のコードにリターン |
[Shift]+[F11] |
|
3種類のステップ実行 |
状態を監視するさまざまな監視ウィンドウ
上記のような「ブレークポイント」や「ステップ実行」は、当然のことながら、そのときどきのポイントを監視する各種の監視ウィンドウと併用して初めて意味ある行為となる。以下では、現在のコードの状態を監視する主要な監視ウィンドウについて簡単に触れておくことにしよう。
(1)[自動変数]ウィンドウ
ブレークされたときの現在行、および直前の行における変数の値をリスト表示する。ただし、変数の値はコード・エディタ内で該当のコード部分にマウス・ポインタを当てることでもTIPS表示させることができる。
|
[自動変数]ウィンドウ |
ブレークポイントでの自動変数の値を表示する。 |
(2)[ローカル]ウィンドウ
現在ブレークしている関数(メソッド)中におけるローカル変数の値をリスト表示する。特にASP.NETにおいては、RequestやServer、Sessionなどのオブジェクトにおけるプロパティ値を確認することで、リクエストの状態などを知ることができるだろう。
|
[ローカル]ウィンドウ |
ローカル変数の値を表示する。 |
(3)[ウォッチ]ウィンドウ
あらかじめ変数名、または式を指定しておくことで、その時点での変数/式の値を出力することができる。変数/式はウォッチ・ウィンドウから直接入力するほか、コード・エディタ上で該当の変数/式を選択し、コンテキスト・メニューから[クイック ウォッチ]を選ぶことでも追加可能だ。
|
[ウォッチ]ウィンドウ |
特定の変数や式を指定して、それらの値を調べることができる。 |
(4)[イミディエイト]ウィンドウ
ウィンドウ上からコマンドを実行し、任意の変数やデバッグ処理を行う。変数の確認を行うイミディエイト・モードと、VS.NETのコマンド(各ウィンドウの表示やエディット機能)を実行するコマンド・モードとを切り替えることができる。[イミディエイト]ウィンドウで使用できる主な構文は以下のとおり。
入力内容 |
概要 |
? 変数名/式 |
指定された変数/式の値を表示する |
> コマンド |
イミディエイト・モードにおいて、頭に「>」を付加することで、一時的にコマンド・モードに切り替えることができる |
> cmd |
イミディエイト・モードからコマンド・モードへ切り替える |
> immed |
コマンド・モードからイミディエイト・モードへ切り替える |
|
[イミディエイト]ウィンドウにおける主な構文 |
|
[イミディエイト]ウィンドウ |
任意のコマンドを実行するコマンド・モードと、変数確認を行うイミディエイト・モードとを切り替え可能。 |
(5)[呼び出し履歴]ウィンドウ
現在のメソッドをコールするまでに呼び出したメソッドの履歴を確認する。メソッドが幾つもの階層にもわたってコールされている場合に、実行過程をトレースする目的で使用する。各関数名と記述に使用されたプログラミング言語を表示する。オプションとしてモジュール名、行番号、バイトオフセット、パラメータ名(型、値)を表示することも可能である。また、これらオプション情報は[呼び出し履歴]ウィンドウ上で右クリックしたときに表示されるコンテキスト・メニューから表示/非表示を切り替えられる。
|
[呼び出し履歴]ウィンドウ |
現在のメソッドをコールするまでに呼び出されたメソッドをツリー図として表示。 |
以上、VS.NET用に用意された主なデバッグ機能を紹介してきた。しかし、ほかの機能にもいえることであるが、しょせん機能は機能に過ぎないのも事実だ。特にコード中の論理的なエラーなどは、ただ漫然とツールを利用しているだけでは容易に検出できない。効果的なバグの摘出には、これらのデバッグ・ツールを複合的に利用することが重要となってくるが、これらのテクニック紹介についてはまた別に機会に譲ることとしたい。
Insider.NET 記事ランキング
本日
月間