デバッガーという用語は、バグという用語に由来しています。メソッド内のバグとは、除去すべき間違いのことです。エラーが発生した場合、またはメソッドの実行を監視する必要がある場合には、デバッガーを使用します。デバッガでは、メソッドをステップごとにゆっくり確認してメソッドの情報を検証できるため、バグを発見するために役立ちます。このようにメソッドをステップごとに確認する処理はトレースと呼ばれます。
次のような方法を使用して、デバッガーウィンドウでメソッドを表示し、トレースできます:
- シンタックスエラーウィンドウでトレースボタンをクリックする。
- TRACEコマンドを使用する。
- メソッド実行ウィンドウでデバッグボタンをクリックする。
- メソッド実行中にAlt+Shift+右クリック(Windows) または Control+Option+Command+クリック(Macintosh) を行い、表示されるポップアップウィンドウ内でトレースするプロセスを選択する:

- ランタイムエクスプローラーのプロセスページにてプロセスを選択した後、トレースボタンをクリックする。
- メソッドエディターウィンドウ、またはランタイムエクスプローラーのブレークおよびキャッチページでブレークポイントを作成する。
注: データベースのパスワードシステムが有効な場合、デザインモードへのアクセス権を持つグループに所属するDesignerやユーザーだけが、メソッドをトレースできます。
デバッガーウィンドウ(ローカルモード):

デバッガーウィンドウ(リモートモード):

必要に応じてデバッガーウィンドウを移動したり、その内部にあるウィンドウ枠のサイズを変更したりできます。新しいデバッガーウィンドウの表示には、同じセッション内で表示された最後のデバッガーウィンドウと同じ構成(ウィンドウのサイズと位置、分割線の配置およびカスタム・ウォッチエリアの内容)を使用します。
4Dはマルチタスク環境です。複数のユーザプロセスを実行した場合には、それぞれのプロセスを個別にトレースできます。プロセスそれぞれについて1つのデバッガーウィンドウを表示できます。
デバッガウィンドウは、一般的にそのコードが実行されているマシン上に表示されます。
- シングルユーザー版アプリケーションの場合、デバッガは常にアプリケーションを実行しているマシン上に表示されます。
- クライアント/サーバー版アプリケーションの場合、ローカルに実行されているコードの場合にはリモート4D 上に表示され、サーバー上で実行されているコード(サーバー上で実行オプションがつけられたメソッド)の場合にはサーバーマシン上に表示されます。
しかしながら、クライアント/サーバー版アプリケーションでは、サーバー上で実行されているコードに対してデバッガを特定のリモート4D に表示を委譲することができます。これはヘッドレスモードで実行中のサーバーアプリケーションにおいては特に有用です。これを行うためには、サーバーに接続されているリモート4D 上にて実行メニューからリモートデバッガを起動コマンドを選択してください:

またリモート4D 上でサーバーコードを自動的にデバッグしたい場合には、開始時にリモートデバッガを起動オプションを選択することができます。
注: - これを行う前にデバッガがサーバー上から"終了"されている必要があります。
- この機能の詳細については、リモートマシンからのデバッグ の章を参照してください。
デバッガーウィンドウの上部にある実行制御ツールバーには、9個のボタンがあります:

トレースが停止され、通常のメソッド実行が再開されます。
Note: Shift+F5またはShiftを押しながらトレースなしボタンをクリックすると、実行が再開されます。この操作により、以降のカレントプロセスでの全てのTRACE呼び出しが無効になります。
現在のメソッド行(プログラムカウンタと呼ばれる黄色い矢印で示されている行)が実行され、デバッガは次の行に移動します。ステップ(同一メソッドのみ)ボタンはサブルーチンや関数に移動することはなく、現在トレースの対象となっているメソッドのレベルにとどまります。サブルーチンや関数呼び出しもトレースしたい場合には、ステップ(呼び出しメソッドもトレース)ボタンを使用します。
リモートデバッグにおいては、メソッドの最後の行の実行後、メソッドがサーバー上で実行されていた場合にはその親メソッドが呼ばれます。親メソッドがリモート側で実行されていた場合には、このボタンはトレースなしボタンと同じように振る舞います。
別のメソッド(サブルーチンまたは関数)を呼び出す行が実行される場合にこのボタンを使用すると、呼び出されているメソッドがデバッガウィンドウに表示され、このメソッドをステップごとに実行できます。デバッガウィンドウのメソッド連鎖エリア では、新しく呼び出されたメソッドがカレント (一番上) となります。別のメソッドを呼び出していない行が実行される場合には、このボタンはステップ(同一メソッドのみ)ボタンと同等に動作します。
リモートデバッグにおいては、メソッドの最後の行の実行後、メソッドがサーバー上で実行されていた場合にはその親メソッドが呼ばれます。親メソッドがリモート側で実行されていた場合には、このボタンはトレースなしボタンと同じように振る舞います。
サブルーチンや関数をトレースする場合にこのボタンをクリックすると、現在トレースされているメソッド全体を実行し、呼び出し元メソッドに戻ること ができます。デバッガウィンドウはメソッド連鎖の前のメソッドに戻ります。現在のメソッドがメソッド連鎖の最後のメソッドである場合には、デバッガウィン ドウが閉じられます。
リモートデバッグにおいては、メソッドの最後の行の実行後、メソッドがサーバー上で実行されていた場合にはその親メソッドが呼ばれます。親メソッドがリモート側で実行されていた場合には、このボタンはトレースなしボタンと同じように振る舞います。
新しいプロセスを作成する行(New processコマンドが記述されている行)が実行される場合にこのボタンを使用すると、新しいデバッガウィンドウが表示され、新しく作成されたプロセスのプロセスメソッドをトレースすることができます。新しいプロセスを作成しない行が実行される時には、このボタンはステップ(同一メソッドのみ)ボタンと同等に動作します。
メソッドは中断され、メソッドの実行を開始する前の状態に戻ります。イベントに対して実行しているフォームメソッドまたはオブジェクトメソッドをト レースしている場合には、いずれの場合にも停止され、フォームに戻ります。アプリケーションモードから実行しているメソッドをトレースしていた場合には、 そのモードに戻ります。
アボートボタンががクリックされた時と同様、メソッドは中断されます。さらに、4Dはメソッドエディタウィンドウを開いて、アボート&編集ボタンがクリックされた時点で実行していたメソッドを表示します。
Tip: このボタンは、コードにどのような変更が必要かが明らかであり、メソッドのテストを続行するためにその変更が必要な場合にクリックしてください。変更が完了したら、メソッドを再実行できます。
編集ボタンをクリックすると、アボート&編集ボタンをクリックした場合と同じ動作が実行されますが、現在の実行をアボートしません。メソッドの実行はその時点で一時停止されます。4Dは編集ボタンがクリックされた時点で実行されていたメソッドをメソッドエディタウィンドウで表示します。
重要: このメソッドを修正することはできますが、デバッガウィンドウで現在トレースされているメソッドのインスタンスに対しては、この修正内容は反映されず、実 行もされません。メソッドがアボートされるか、または正常に終了した後、このメソッドが次に実行される時に修正が反映されます。つまり、メソッドへの変更 を有効にするには、メソッドを再ロードしなければなりません。
Tip: このボタンは、コードに必要な変更内容がわかっている場合や、変更が実行やトレースの対象となるコードの残りの部分の妨げにならない場合に使用します。
Tip: オブジェクトメソッドは各イベント毎に再ロードされます。オブジェクトメソッドをトレースしている場合、フォームを終了する必要はありません。オブジェク トメソッドを編集し、変更内容を保存し、フォームに戻って再実行することができます。フォームメソッドのトレースや変更の際に、フォームメソッドを再ロー ドするには、フォームを終了し、再び表示しなければなりません。フォームを大規模にデバッグする場合のコツは、(デバッグの対象となっている)コードを、 フォームメソッドからのサブルーチンとして使用しているプロジェクトメソッドに入力することです。このようにすれば、このサブルーチンがフォームメソッド から呼び出されるたびに再ロードされるため、フォームをトレースし、編集し、再テストしている間もフォームを使用することができます。
現在のデバッガウィンドウの構成(ウィンドウのサイズと位置、分割線の配置およびカスタム・ウォッチエリアの内容)を、データベースが開かれるたび にデフォルトで使用できるように保存することができます。これらの内容は、データベースのストラクチャファイルに保存されます。
注: このアクションはリモートデバッグモードでは利用不可能です(リモートマシンからのデバッグ 参照)。
デバッガでは以下のような情報が表示されます:
- 上部に表示: 現在トレースしているメソッドまたはクラスの名前、クラス関数の名前とプロトタイプ
- 下部に赤で表示: デバッガが表示される最初の原因のアクション
先に示したウィンドウの例では、次の情報が表示されています:
- 現在トレースされているメソッドはClients_BuildLogo メソッドです。
- デバッガウィンドウが表示されているのは、C_PICTUREコマンドへの呼び出しが検出され、このコマンドは検出の対象コマンドの1つであるためです。
デバッガとメッセージが表示される理由は次の通りです(赤で表示されます):
- TRACEコマンド: TRACEの呼び出しが実行されたため。
- ブレークポイントに到達: ブレークポイントが発見されたため。
- ユーザによる割り込み: Alt+Shift+右クリック(Windows)またはcontrol+option+command+クリック(Macintosh)を使用するか、あるいはデザインモードのランタイムエクスプローラのプロセスページでトレースボタンをクリックしたため。
- 次のコールを検出: コマンド名:検出の対象となった4Dコマンドへの呼び出しが実行位置にあるため。
- 新規プロセスへステップ中: ステップ(別プロセスもトレース)ボタンを使用したため、新しく作成されたプロセス用に開かれたデバッガウィンドウのためこのメッセージが表示される。
デバッガウィンドウは、前述の実行コントロールツールバーとサイズ変更可能な次の4つのペインから構成されます:
最初の3つのエリアでは、操作が簡単な階層型リストを使用して、関連するデバッグ情報を表示します。4番目のソースコードエリアは、トレースされて いるメソッドのソースコードを表示します。それぞれのエリアには、デバッグ作業を支援する独自の機能があります。マウスを使用して、デバッガウィンドウだ けではなく、各エリアも垂直および水平方向にサイズを変更することができます。さらに、最初の3つのエリアには、表示する2つのカラムの間に点線による区 切り線が含まれています。マウスを使用して、この点線を移動し、必要に応じて水平方向にカラムのサイズを変更することができます。