リモートマシンからのデバッグ
概要
4Dデータベースが 4D Server 上でインタープリターモードで動いている場合、プロジェクトにログインしているリモート4Dクライアントからサーバーで実行中の 4Dコードをデバッグすることができます。 特定のリモートマシンでデバッガーを起動すると、そのリモートマシン上で直接、コードの実行をモニターすることができます。
リモートマシン上で起動された デバッガー には、サーバーコードのデバッグ中であることを示すサーバーアイコンと青い背景色のデバッグアイコンが表示されるほか、呼び出し連鎖と式のペインの背景が薄っすらと青く色づきます:
この機能は、4D Server がヘッドレスモード (コマンドラインインターフェース 参照) で実行中、あるいはサーバーマシンへのアクセスが難しい場合などに特に有用です。
有効化済デバッガー
4D Serverアプリケーションのデバッグは、一度に一つのデバッガーのみがおこなえます。 これを 有効化済デバッガー と呼びます。 有効化済デバッガーには、以下のものを利用できます:
- ローカルの 4D Serverデバッガー (デフォルト) - サーバーがヘッドレス実行されていない場合
- リモート4Dクライアントのデバッガー - リモートセッションがデザインモードにアクセス可能な場合
- 4D Server 上の Qodly デバッガー - Qodly Studio へのアクセスがサーバーで許可されている場合。
- the VS Code debugger, provided you installed the 4D-Debugger extension.
有効化済デバッガーは、4D Server が次のいずれかに遭遇した場合に呼び出されます:
- ブレークポイント
- a
TRACE
command - キャッチコマンド
- エラー
エラーメッセージは、デバッガーが有効化されているマシンに送られるという点に注意してください。 これはつまり、リモートデバッガーの場合には、サーバーのエラーメッセージがリモート4Dクライアント上で表示されるということです。
注:
- The code executed in the
On Server Startup Database
Method cannot be debugged remotely. これはサーバー側でしかデバッグすることができません。 - デバッガーが有効化されていない場合、実行中のコードがデバッグコマンドによって中断されることはありません。
デバッガーの有効化
インタープリターモードのアプリケーションを起動したとき、デフォルトでは:
- 4D Server がヘッドレス実行中でない場合、デバッガーはサーバー側で有効化されています。
- 4D Server がヘッドレス実行中の場合には、デバッガーは有効化されていない状態です。
4D Serverアプリケーションに接続できるリモート4Dクライアントであれば、サーバーのデバッガーを有効化することができます。
リモート4Dクライアントのユーザーセッションは、データベースのデザイン環境へのアクセス権を持っている必要があります。
サーバーのデバッガーをリモート4Dクライアントで有効化するには:
- In the 4D Server menu bar, select Edit > Detach Debugger so that the debugger becomes available to remote machines (this step is useless if the 4D Server is running headless).
- In a remote 4D client connected to the server, select Run > Attach Remote Debugger
If the attachment is accepted (see Rejected attachment requests), the menu command becomes Detach Remote Debugger.
これで、サーバーのデバッガーはリモート4Dクライアントで有効化され、以下のタイミングまで有効化されたままです:
- ユーザーセッションが終了するまで
- until you select
Detach Remote Debugger
デバッガーを再度サーバー側で有効化するには:
- On the remote 4D client that has the debugger attached, select Run > Detach Remote Debugger.
- In the 4D Server menu bar, select Edit > Attach debugger.
サーバー上でデバッガーが有効化されていると (デフォルト)、デバッグを可能にするため、サーバープロセスはすべて自動的にコオオペラティブモードで実行されます。 これは、パフォーマンスに大きな影響を与えかねません。 サーバーマシン上でデバッグする必要がない場合は、デバッガーを無効化し、必要に応じてリモートマシンで有効化することが推奨されます。
デバッガを開始時に有効化する
デバッガーは、リモート4Dクライアントまたはサーバーの開始時に自動的に有効化することができます:
- On the server (if not headless), this option is named Attach Debugger At Startup. サーバーが開始されると、自動的にデバッガーが有効化されます (デフォルト):
Warning: If this option is selected for a server which is subsequently launched in headless mode, the debugger won't be available for this server.
- On a remote 4D client, this option is named Attach Remote Debugger At Startup. このオプションが選択されている場合、リモート4Dクライアントは、その後同じ 4D Serverデータベースに接続するたびに、自動的にリモートデバッガーを有効化しようとします。 If the attachment is accepted (see Rejected attachment requests), the remote debugger is automatically attached to the remote 4D client and the Detach Remote Debugger option is displayed.
This setting is applied per project and is stored locally in the
.4DPreferences
file.
有効化リクエストの拒否
ほかのリモート4Dクライアントまたは 4D Server にてすでに有効化されていた場合、他のマシンでサーバーのデバッガーを有効化することはできません。
別マシンにて有効化済のデバッガーを有効化しようとした場合、その有効化リクエストは拒否され、以下のようなダイアログが表示されます:
このような場合に、デバッガーを有効化するには、以下のどちらかの条件が必要です:
- the attached debugger is detached from the server or from the remote 4D client using respectively the Detach debugger or Detach remote debugger menu command,
- 有効化済デバッガーを使用しているリモート4Dクライアントセッションが閉じられる。