バグのあるプログラム’をデバッグする場合は、デバッグ対象プログラムをデバッガで実行します。実行中に特定の命令に到達したり、特定の変数を修正する必要があるとき、デバッガによって一時停止します。このように、プログラムの実行が一時停止している間、ユーザーはデータの現在値を確認して想定したフローに従ってプログラムが進行しているか確認します。
Debugは、プロジェクト全体を対象とする‘Debug’と、現在、開いているFormだけ対象とする‘Debug Form’に区分され、この文書で説明するデバッグ機能は、‘Debug Form’機能を基準に説明しています。
Debug Start
1から100までの合計を求めるFormを例に挙げて説明します。
プログラムの実行途中に変化する値をチェックする場合は、[図]のようにBreakpointを設定します。Breakpointの設定は、該当のラインにカーソルを移動して<F9>を押します。Breakpointを削除する場合は、該当のラインにカーソルを移して<F9>をもう一度押すと、Breakpointが削除されます。
Debugモードでプログラムを実行します。ソースコードで最低一つ以上のBreakpointを設定すると、Debug Toolbarアイコンをクリックするか、メニュー[Debug – Start Form Debugging]を選択します。ファンクションキー<F6>を押しても同じ機能を実行します。
下記の図はプログラムが一時停止した画面です。画面に表示された矢印は現在、実行されている命令行の位置を表示します。
デバッグが開始すると、下記の図のようにDebug、Watch、Call Stack及びVariablesウィンドウが活性化されます。
Debugウィンドウ
Watchウィンドウ
デバッグが追跡した変数と式の現在の値またはプログラムが一時停止するごとに特定の変数の現在値を知りたい場合、該当の変数を[図11-7]のWatchウィンドウに登録します。プログラムが一時停止したとき、またはプログラムの進行中に変化する値が表示されます。
Watch Windowの‘Expression’にユーザーがKeyboardで直接、変数名を入力するか、ScriptウィンドウまたはVariablesウィンドウでDrag&Dropで変数名を追加することができます。
Watchウィンドウに追加されたExpressionは<Del>キーで削除でき、WatchウィンドウリストはUX-Studioで別に管理されるため、Project Openするとき、最後にExpressionリストを表示します。
Variables ウィンドウ
[図 11-10]は、一時停止位置でアクセス可能な変数の現在値を表示する画面です。
Debug ウィンドウ
[図11-11]はデバッグの実行状態を表示する画面です。
Call Stackウィンドウ
[図11-12]は一時停止の位置まで近づいてきた関数を逆の順に表示する画面です。
Debugメニュー
Debugメニューでサポートする機能は下記の通りです。
メニュー | アイ コン | 機能 | |
---|---|---|---|
1 | Start Debugging | Projectのデバッグモード開始<F5> | |
2 | Start Form Debugging | 現在、選択されたFormのデバッグモード開始<F6> | |
3 | Stop Debugging | デバッグモード終了 | |
4 | Restart | デバッグモード再開 | |
5 | Step Into | 1ステップトレース、ステップ時に関数内に入る<F11> | |
7 | Step Over | 1ステップトレース、ステップ時に関数を処理して通過 | |
8 | Step Out | 1ステップトレース、1ステップを全て実行し、次のステップに移動<F10> | |
9 | Run to Cursor | 現在、カーソルが位置する行まで実行した後に停止 | |
10 | Toggle Breakpoint | Breakpointを設定/解除<F9> | |
11 | Delete Selected Breakpoint | Breakpointsウィンドウで選択されたBreakpointを解除 | |
12 | Delete All Breakpoints | 全てのBreakpointを解除 | |
13 | Go To Source | 選択されたBreakpointのソースコードの位置に移動 | |
14 | Enable/Disable Selected Breakpoint | Breakpointsウィンドウで選択されたBreakpointを活性化/非活性化 | |
15 | Enable/Disable All Breakpoints | 設定された全てのBreakpointを活性化/非活性化する機能 |