第2章 Visual Basic 6.0 の主なウィンドウ

2.9 デバッグのためのウィンドウ群
(イミディエイトウィンドウウォッチウィンドウローカルウィンドウ)


 この節 (2.9) の見出しの一覧

 デバッグのためのウィンドウ群とはイミディエイトウィンドウに表示するログの活用例デバッグ作業用のツールバーデバッグのためのウィンドウ群の呼び出し方Visual Basic の三つの状態デバッグの手段1(ブレークポイントの設定)デバッグの手段2(変数や式の値の参照)デバッグの手段3(呼び出し履歴)デバッグの手段4(ステップイン、ステップオーバー、ステップアウト)


(a) デバッグのためのウィンドウ群とは

 デバッグのためのウィンドウ群は、主にアプリケーションプログラムを Visual Basic インタープリタのもとで実行させた後 (開始の指示を与えた後) に活躍する召使たちであり、その役割はデバッグの支援です。

 Visual Basic 4.0 の時代はデバッグウィンドウという名前の一つのウィンドウしかなかったのですが、Visual Basic 5.0 からデバッグ機能の強化にともなって三つのウィンドウに分化しました。即ち、イミディエイトウィンドウウォッチウィンドウローカルウィンドウの三つがデバッグ作業を支援するようになっています。

 昔のデバッグウィンドウは、上部がウォッチペインで、下部がイミディエイトペインというドッキング (連結) した構造になっていました。Visual Basic 6.0 のウォッチウィンドウは昔のウォッチペインに相当するものであり、イミディエイトウィンドウは昔のイミディエイトペインに相当するものです。なお、ローカルウィンドウはニューフェイスです。

 --- Visual Basic 6.0 においても、ドッキングの指定によって、イミディエイトウィンドウとウォッチウィンドウを連結させることができます。こうすると昔のデバッグウィンドウと同じような構造になります。ドッキングの指定は、これだけでなく、例えばプロジェクトエクスプローラプロパティウィンドウを連結させようなこともできます。
 ドッキングさせるには、(メインウィンドウツール(T) というメニュータイトルを開いて、その中のオプション(O)... というメニュー項目をクリックすると登場する) オプションというダイアログボックスの中のドッキングというタブの中のチェックボックスにチェック印を付けてください。---

 イミディエイトウィンドウは、次の形 (顔) をしています。




 イミディエイトウィンドウに Visual Basic のステートメントを一行インプットして、Enter キーを押下すると、そのステートメントを即実行させることができます。

 --- Visual Basic 5.0 からは、プログラムの実行を中断させたときだけでなく、プログラムのデザイン状態でもイミディエイトウィンドウを用いることができるようになっています。---

 イミディエイトウィンドウは、実行のログをとるためにも使えます。コードウィンドウの中に Debug.Print というステートメントを張り付けておくと、そこを実行する度に、実行の状況を示すメッセージがイミディエイトウィンドウに一行ずつ書き出されていきます。したがって、これを見ることによってプログラムの動きを知ることができます。


 ウォッチウィンドウは、次の形 (顔) をしています。



 変数を組み合わせた式の値 (または変数の値) を見るために、あらかじめウォッチ式の指定をしておくと、ウォッチウィンドウにその値が表示されます。したがって、式の値の変化を観察するのに便利です。


 ローカルウィンドウは、次の形 (顔) をしています。



 中断点においてそのプロシージャで使われているローカル変数の値は、ローカルウィンドウに表示することができます。

 --- ウォッチウィンドウに式の値を表示するには、あらかじめウォッチ式の指定をしておくことが必要ですが、ローカルウィンドウには何の指定もせずにローカル変数の値を表示できます。---

 
 

(b) イミディエイトウィンドウに表示するログの活用例

 デバッグの手段の一つにブレークポイントがあります。これはなかなか有効です。しかし、タイミングクリティカルなイベントプロシージャの中にブレークポイントの設定をして中断させると、その後の動作が中断しない場合の動作と異なってしまい、混乱におちいることがあります。詳しくは Visual Basic 6.0 のオンラインマニュアルの中の「デバッグに関する注意点」を参照してください。このような場合には、混乱を避けて、ブレークポイントというデバッグ手段は使わないようにすることです。この代わりに、Debug.Print というステートメントを用いてイミディエイトウィンドウに実行のログをとることをお勧めしています。

 --- この他にも、イミディエイトウィンドウのログは次のように活用することができます。それはMANDALA高級イベントルーチンがどのようなタイミングで呼び出されるのかを習得するため仕掛けの中に見ることができます。
MANDALA Rensyuu3.vbp というプロジェクトをVisual Basic (インタープリタ) のもとで実行させると、イミディエイトウィンドウに画面対応の高級イベントルーチンのログが時々刻々と表示されるようになっています。アプリケーションプログラムを操作しながらこのイミディエイトウィンドウを見ることは、画面対応の高級イベントがどのような場合に発生するのかを理解する上でとてもに役立ちます。---

 
 

(c) デバッグ作業用のツールバー

 デバッグ作業をするときには、以下に示すデバッグ作業用のツールバーを登場させると便利です。



 デバッグ作業用のツールバーを登場させるには、メインウィンドウ表示(V) というメニュータイトルを開いて、その中のツールバー(T) というメニュー項目にマウスカーソルを移動させて第三階層のメニュー項目群を出現させて、その中のデバッグ というメニュー項目をクリックしてください。

または、メインウィンドウのツールバーの上でマウスの右ボタンをクリックして、ポップアップメニューを表示させて、その中のデバッグ というメニュー項目をクリックしてください。

 なお、このツールバードラッグ (マウスの左ボタンをクリックしたままの状態でのマウスの移動) してメインウィンドウの中にドロップする (目標の個所でマウスの左ボタンを元に戻す) と、メインウィンドウの中にこのツールバーを組込むことができます。この場合は、標準ツールバーについては、表示を消すか、あるいはツールバーの左端の二本の縦線をドラッグして、メインウィンドウの外にドロップするとよいでしょう。


(d) デバッグのためのウィンドウ群の呼び出し方

 デバッグのためのウィンドウ群のうちイミディエイトウィンドウは、次の操作を行って実行状態にすると自動的に呼び出されます。



 実行状態にするには、上図のボタン、即ちメインウィンドウのツールバーの中の開始ボタンをクリックしてください。または、メインウィンドウ実行(R) というメニュータイトルを開いて、その中の開始(S) というメニュー項目をクリックしてください。あるいは、ファンクションキー F5 を押下してください。

 このどれかの操作をすると Visual Basic が実行状態になりアプリケーションプログラムの実行が開始して、同時にイミディエイトウィンドウが登場します。

 --- 実行状態にするためのこの操作方法は極めて標準的なものなのですが、これではアプリケーションプログラムの文法違反のチェックが完全には行われません。ですから、この操作方法の代わりに、次の操作をするように習慣づけることをお勧めいたします。それは、メインウィンドウ実行(R) というメニュータイトルを開いて、その中の完全コンパイル後に開始(F) というメニュー項目をクリックするか、またはキーボード上のCtrl キーを押したまま更にファンクションキーF5 を押下するという操作方法です。こうすると、アプリケーションプログラムの文法違反のチェックが完全に行われます。---

 デバッグのためのウィンドウ群を呼び出すには、メインウィンドウ表示(V) というメニュータイトルを開いて、その中のそれぞれのメニュー項目をクリックしてください。即ち、イミディエイトウィンドウならばイミディエイトウィンドウ(I) というメニュー項目を、ウォッチウィンドウならばウォッチウィンドウ(H) というメニュー項目を、ローカルウィンドウならばローカルウィンドウ(S) というメニュー項目を、それぞれクリックしてください。



 デバッグのためのウィンドウ群を呼び出すには、デバッグ作業用のツールバーの中のボタンをクリックする方法もあります。上図の三つは、左からそれぞれローカルウィンドウボタン、イミディエイトウィンドウボタン、ウォッチウィンドウボタンです。

 因みに、デバッグのためのウィンドウ群を呼び出す操作は、これらのウィンドウがディスプレイ画面上のどこかに既に登場している場合にも有効です。即ち、ディスプレイ画面上に数多くのウィンドウが重なっていて、どこにこれらのウィンドウがあるのかを探すのが面倒なときには、この操作をすることで目指すウィンドウをディスプレイ画面の前面に浮き上がらせることができます。

 デバッグのためのウィンドウ群を使わないときには、ディスプレイ画面上からそれぞれのウィンドウを消すことができます。目指すウィンドウの右上端のX印閉じるボタンをクリックすると消えます。


(e) Visual Basic の三つの状態

 Visual Basic には、デザイン状態実行状態中断状態の三つの状態があります。

 プロジェクトを開くと、最初はデザイン状態になります。この状態では、画面のデザインやプログラムコードのインプットや修正を自由に行うことができます。

 アプリケーションプログラムの開始の指示を与えると、実行状態になります。この状態では、インタープリタの働きによって正にプログラムが実行しているわけですから、画面のデザインを行うことができませんし、プログラムコードのインプットや修正を行うこともできません。また、プログラムの中の変数の値を見ることもできません。

 実行状態を中断させて中断状態にすると、プログラムの中の変数の値を見ることができるようになりますし、若干の制限がありますがプログラムコードを修正できるようになります。ただし、中断状態では、画面のデザインを変更することはできません。



 実行状態から中断状態に変更するには、上図のボタン、即ちメインウィンドウのツールバーの中の中断ボタンをクリックしてください。または、メインウィンドウ実行(R) というメニュータイトルを開いて、その中の中断(K) というメニュー項目をクリックしてください。こうすると中断状態にすることができます。

 ところが、プログラムがモーダルなダイアログボックスを表示しているときなどには、メインウィンドウの機能が働かないために、上記の操作方法では中断状態にすることができません。このような場合には、キーボード上の Ctrl キーを押したまま更に Pause (Break) キーを押下して、実行状態から中断状態に強制的に変更してください。

 --- これらの手操作では、プログラムの中の意図したステップで中断させることは困難です。意図したステップで中断させたい場合には、後述のブレークポイントの設定を行ってください。---

 中断状態は、デバッグの便をよくするためのものです。後述のデバッグの手段1、2、3、4は、どれも皆、中断状態のときに使うことができます。

 プログラムの実行が終了するとデザイン状態に戻ります。または、手操作でデザイン状態に戻すこともできます。



 実行状態または中断状態からデザイン状態に変更するには、上図のボタン、即ちメインウィンドウのツールバーの中の終了ボタンをクリックしてください。または、メインウィンドウ実行(R) というメニュータイトルを開いて、その中の終了(E) というメニュー項目をクリックしてください。こうすると一般にはデザイン状態に戻すことができます。

 ところが、プログラムがモーダルなダイアログボックスを表示しているときなどには、メインウィンドウの機能が働かないために、上記の操作方法ではデザイン状態にすることができません。このような場合には、キーボード上の Ctrl キーを押したまま更に Pause (Break) キーを押下して、実行状態から中断状態に強制的に変更してください。こうすれば、その後でデザイン状態に戻すことができます。


(f) デバッグの手段1(ブレークポイントの設定)

 デバッグ作業の中では、しばしばブレークポイントの設定をしますが、これはなかなか有力な手段です。あるステートメントにブレークポイントの設定をしておくと、そこを実行する直前に中断状態になります。したがって、そのステートメントが実行されるかどうかを知ることができますし、またバグのありそうな前あたりで中断させて問題の箇所を詳しく調べるための準備体勢を整えることもできます。

 ブレークポイントの設定をするのは非常に簡単です。コードウィンドウの中の目指すステートメントの左端の帯 (マージン) をクリックして赤丸を表示させるだけで、そのステートメントにブレークポイントの設定をすることができます。そして、この操作を繰り返すことで、複数のステートメントにブレークポイントの設定をすることができます。なお、設定済みの赤丸をクリックすると、ブレークポイントの解除ができます。

 なお、ブレークポイントの設定や解除の操作は、デバッグ作業用のツールバーのボタンブレークポイントの設定/解除によって行なうこともできますし、メニュー項目ブレークポイントの設定/解除(T)によって行なうこともできます。

 ブレークポイントの設定 (および解除) は、中断状態だけでなく、実行状態やデザイン状態においても行うことができます。


(g) デバッグの手段2(変数や式の値の参照)

 中断状態では、種々の方法で変数や式の値を見ることができます。

 一番簡単な方法は、マウスカーソルをコードウィンドウの変数の上にもっていくことです。これだけで、その変数の値を見ることができます。このことをインスタントウォッチと呼びます。ただし、この方法では式の値を見ることはできません。

 また、ローカルウィンドウを登場させると、中断したプロシージャで使われているローカル変数の値を見ることができます。ただし、この方法でも式の値を見ることはできません。

 式の値を見るには、クイックウォッチ機能を使います。

 クイックウォッチするには、まず、どの式の値 (または変数の値) を見たいのかを明確にするために、コードウィンドウの中の式 (または変数) をマウスでドラッグ (マウスの左ボタンをクリックしたままの状態でのマウスの移動) して反転表示にしてください。



 次に上図のボタン、即ちデバッグ作業用のツールバーの中のメガネ印のクイックウォッチボタンをクリックしてください。または、メインウィンドウデバッグ(D) というメニュータイトルを開いて、その中のクイックウォッチ(Q)... というメニュー項目をクリックしてください。あるいは、Shift キーを押したまま更にファンクションキー F9 を押下してください。

 このどれかの操作をすると、クイックウォッチというダイアログボックスが登場して、そこに式の値 (または変数の値) が表示されます。

 --- Public 変数はどこででも見ることができるはずなのにもかかわらず、クイックウォッチというダイアログボックスに<対象範囲外> と表示されてしまい、その値を参照できないことがあります。このような場合には、後述のウォッチ式の追加およびウォッチ式の編集という操作をすると、その値を見ることができるようになります。---

 ウォッチ式の追加の指定をしておくと、変数や式の値をウォッチウィンドウに表示されるようになります。頻繁に見たい式の値は、見たいと思うたびにクイックウォッチの操作をするよりも、ウォッチ式の追加をしておく方が便利です。

 ウォッチ式の追加を行うには、コードウィンドウの中の反転表示の式 (または変数) をマウスでドラッグ (マウスの左ボタンをクリックしたままの状態でのマウスの移動) して、ウォッチウィンドウにドロップしてください (ウォッチウィンドウのところでマウスの左ボタンを元に戻してください)。

 または、クイックウォッチというダイアログボックスの中の追加(A) というボタンをクリックしてください。

 あるいは、デバッグ(D) というメニュータイトルを開いて、その中のウォッチ式の追加(A)... というメニュー項目をクリックして、ウォッチ式の追加というダイアログボックスを用いて追加してください。

 少し前のご注意と同様のことですが、Public 変数はどこででも見ることができるはずなのにもかかわらず、ウォッチウィンドウ<対象範囲外> と表示されてしまい、その値を参照できないことがあります。このような場合には、ウォッチ式の編集という操作をすると、その値を見ることができるようになります。

 ウォッチ式の編集を行うには、まず、ウォッチウィンドウの中の編集したい式をクリックして反転表示に変えてください。

 次に、デバッグ(D) というメニュータイトルを開いて、その中のウォッチ式の編集(E)... というメニュー項目をクリックしてください。

 こうすると、以下に示すウォッチ式の編集というダイアログボックスが登場します。




 この中のモジュール(M): というコンボボックスに (すべてのモジュール) という値を設定すると、どこで中断しても Public 変数を表示できるようになります。

 なお、ウォッチ式の編集というダイアログボックスの中のウォッチの種類として式のウォッチ(W) 以外を選択した後に、実行を開始すると、ブレークポイントの設定とは一味違う条件により中断状態にすることができます。


(h) デバッグの手段3(呼び出し履歴)

 中断状態では、呼び出し履歴を見ることができます。



 呼び出し履歴を見るには、上図のボタン、即ちデバッグ作業用のツールバーの中の呼び出し履歴ボタンをクリックしてください。または、メインウィンドウ表示(V) というメニュータイトルを開いて、その中の呼び出し履歴(K)... というメニュー項目をクリックしてください。


(i) デバッグの手段4(ステップイン、ステップオーバー、ステップアウト)

 中断状態では、プログラムの実行のステップを追跡していくことができます。一ステップずつ実行させるにはステップイン (シングルステップ) を用いますし、呼び出したプロシージャの中身を追跡せずに呼出し側だけに着目してステップを追うにはステップオーバー (プロシージャステップ) を用います。また、呼出し元のプロシージャに戻るにはステップアウトを用います。



 ステップインを実施するには、上図のボタン、即ちデバッグ作業用のツールバーの中のステップインボタンをクリックしてください。または、メインウィンドウデバッグ(D) というメニュータイトルを開いて、その中のステップイン(I) というメニュー項目をクリックしてください。あるいは、ファンクションキー F8 を押下してください。



 ステップオーバーを実施するには、上図のボタン、即ちデバッグ作業用のツールバーの中のステップオーバーボタンをクリックしてください。または、メインウィンドウデバッグ(D) というメニュータイトルを開いて、その中のステップオーバー(O) というメニュー項目をクリックしてください。あるいは、Shift キーを押したまま更にファンクションキー F8 を押下してください。



 ステップアウトを実施するには、上図のボタン、即ちデバッグ作業用のツールバーの中のステップアウトボタンをクリックしてください。または、メインウィンドウデバッグ(D) というメニュータイトルを開いて、その中のステップアウト(U) というメニュー項目をクリックしてください。あるいは、Ctrl キーと Shift キーを両方とも押したまま、更にファンクションキー F8 を押下してください。



eee, SSS/Win, RRR は、ウッドランド株式会社から販売されている製品です。
MANDALA は、アプリテック株式会社の商標として登録の申請を済ませています。
Visual Basic, Windows, Windows NT, ActiveX は、米国マイクロソフト社の商標です。
(ME00V652)




Copyright (C) 1995-2000 By AppliTech, Inc. All Rights Reserved.