Chapter6-4 デバッグ機能

VBEが持っている、プログラムのデバッグやテストに役立つ機能について説明します。


■ブレークポイント
「ブレークポイント」は、指定の行でプログラムを一時停止させる機能です。
ブレークポイントに指定した行が実行される直前で停止します。一時停止させることで、その時点の変数の値などを確認できます。ブレークポイントは、何ヶ所でも設定でき、またそこからプログラムを続行させることもできます。

ブレークポイントは、その行にカーソルがある状態で、次のいずれかの操作によって設定できます。ブレークポイントが設定された行は行全体の背景色が変わり、余白インジケータに●マークが付きます
  • [デバッグ]-[ブレークポイントの設定/解除]メニュー
  • F9キー
  • 余白インジケータバー上での右クリックによる[設定/解除]-[ブレークポイント]メニュー
  • 余白インジケータバーのクリック



ブレークポイントは、その行に対して上記と同じ操作を行うことによって、解除することができます。また、複数のブレークポイントを設定している場合には、次の方法で一括解除できます。
  • [デバッグ]-[すべてのブレークポイントの解除]メニュー
  • Ctrl+Shift+F9キー
また、一時停止したプログラムを再開するには、次のいずれかの操作を行います。
  • [実行]-[継続]メニュー
  • ツールバーの[継続]ボタン
  • F5キー
ツールバーの[リセット]ボタンなどによって、プログラムを再開せずにその場で強制終了させることもできます。

Stopステートメント
「Stop」ステートメントを使うことで、VBEのデバッグ機能ではなく、VBAの命令としてプログラムを一時停止させることもできます。しかしあくまでもデバッグ用ですので、仕上げの段階では削除するよう注意しなければなりません。


■ステップ実行
プログラムを一時停止させたあと、1行ずつ実行させることができます。これに関しては、次の3つの機能があります。いずれも、[デバッグ]メニュー、ツールバー、カッコ内に示したキー操作が可能です。
  • ステップイン
    コードを1行ずつ実行します。別のプロシージャを呼び出している場合には、そのプロシージャ内のコードもステップ実行します。(F8)

  • ステップオーバー
    コードを1行ずつ実行します。別のプロシージャを呼び出している場合、そのプロシージャ内は止まらずに一気に実行されます。(Shift+F8)

  • ステップアウト
    現在位置から、通常の連続実行状態に戻ります。(Ctrl+Shift+F8)

※現在実行中の行は黄色で表示され、余白インジケータには⇒マークが付きます


■自動データヒント
プログラムが一時停止している状態で、コード上の変数やプロパティ名の上にマウスのポインタを移動させると、その値がヒント表示されます。デバッグ中の値をもっとも簡単にチェックできる方法です。



■クィックウォッチ
自動データヒントと同じ機能ですが、別のウィンドウにその値が表示されます。ツールバーやShift+F9キーで実行できます。



■イミディエイトウィンドウ
プログラムが一時停止しているときには、「イミディエイトウィンドウ」を使うことで、任意の変数値を表示させたり、変数に別の値を代入することによって、強制的にその値を変更させたりすることができます。
また、プログラムの流れに影響を与えない範囲で、任意の命令を実行させることもできます。


■ローカルウィンドウ
プログラムが一時停止した状態で「ローカルウィンドウ」を表示させると、現在実行中のプロシージャで利用可能なすべての変数名とその値を詳細に確認することができます。特に、オブジェクト変数については、その下位のオブジェクトやプロパティ値までも、ツリー構造の画面でたどっていくことができます。

ローカルウィンドウは、[表示]メニューやツールバーで表示させることができます。



■ウォッチ式の追加
ある変数や条件式を「ウォッチ式」に追加することによって、ステップ実行中の変数の変化を追跡したり、条件式にしたがってプログラムを一時停止させたりすることができます。自動データヒントや高度な条件のブレークポイント設定を兼ね備えたような機能です。

ウォッチ式への追加は、次のような操作で行ないます。変数を追加する場合には、その変数上にカーソルがある状態で操作します。
  • [デバッグ]-[ウォッチ式の追加]メニュー
  • マウスの右クリックによる[ウォッチ式の追加]メニュー

    ※「式」の欄にウォッチする変数や条件式を入力します。
    ※「ウォッチの種類」でウォッチ方法を3つの中から選択します。
ウォッチ式に追加された内容は「ウォッチ」ウィンドウに表示されます。このウィンドウを開いておくことによって、ステップ実行中の値の変化も画面で確認できます。


※オブジェクト変数を追加した場合、ウォッチウィンドウにはその下位のプロパティやオブジェクトの値も表示されます。
※コード上において、Withステートメント内にあるオブジェクトやプロパティなどは、そのままの表記ではウォッチ式に追加できません。オブジェクト変数名なども含めた、すべての構文を指定する必要があります。



■次のステートメントの設定
通常、実行時のプログラムは、指定された命令の流れにしたがって動作しますが、一時停止させたとき、あるいはステップ実行中には、「次のステートメントの設定」を行なうことによって、その流れを強制的に変えることができます。一部を飛ばしたり、前に戻って再実行させたりすることができます。

次のステートメントの設定は、次に実行させたい行にカーソルをおいた上で、次のいずれかの操作を行ないます。
  • [デバッグ]-[次のステートメントの設定]メニュー
  • マウスの右クリックによる[次のステートメントの設定]メニュー
  • Ctrl+F9キー
設定されると、その行の背景色が黄色に変わります。そのあとは、そこからステップ実行や継続処理が可能です。



■カーソル行の前まで実行
ブレークポイントと似たような機能です。任意の行に「カーソル行の前まで実行」を設定することで、その行を実行する直前でプログラムを一時停止させることができます。ステップ実行中に設定することも可能です。

一時停止させたい行のどこかにカーソルがある状態で、次のいずれかの操作を行います。これらの操作を行うと、プログラムはそこまで直ちに実行されます。
  • [デバッグ]-[カーソル行の前まで実行]メニュー
  • マウスの右クリックによる[カーソル行の前まで実行]メニュー
  • Ctrl+F8キー


■呼び出し履歴
一般的なプログラムでは、あるプロシージャから別のプロシージャが、そこからさらに別のプロシージャが呼び出されることも少なくありません。一時停止中あるいはステップ実行中に[表示]-[呼び出し履歴]メニューを実行すると、その呼び出されたルートを表示する、「呼び出し履歴」画面が表示されます。複雑な呼び出し関係を持つプログラムで、その前後関係を確認する際に役立ちます。
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved