IBM i アプリケーションのデバッグ時には、アプリケーションが実行される予定のジョブ、またはデバッグ・セッションの開始前からアプリケーションが実行中のジョブをデバッガーが認識している必要があります。例えば、メイン・アプリケーションが別々のタスクに対して別々のジョブを開始するような場合、それらのジョブのジョブ番号は不明なことがあります。 既知の固有のユーザー・プロファイルで実行されているプログラムをデバッグする場合は、サービス・エントリー・ポイントのサポートを使用して、このようなジョブをデバッグすることができます。 サービス・エントリー・ポイントのサポートについて詳しくは、『サービス・エントリー・ポイントを使用した IBM i アプリケーションのデバッグ』を参照してください。
すべてのアプリケーション・ジョブが同じ汎用ユーザー・プロファイルで実行される場合は、サービス・エントリー・ポイントを設定すると、特定のジョブではなく、次にシステムに入ってきたジョブに対してデバッガーが開始されます。
動的接続フィーチャーは、以下のように動作します。
「デバッグ構成 (Debug configurations)」ダイアログから新しい「IBM® i:動的ジョブのデバッグ」構成を作成します。詳しくは、動的接続の構成に関するヘルプを参照してください。 ここで、デバッグ対象のアプリケーションを識別する固有キー (特定のトランザクションのトランザクション ID など) を入力します。アプリケーションを再開するコマンドが必要な場合は、そのコマンドも入力します。
「構成」ダイアログで「デバッグ」を押すと、デバッガーはデータ待ち行列 Q5BTEMP/DYNAMICATT でこのキーを待ちます。アプリケーションがデバッグ対象のポイントに到達すると、アプリケーションまたはそのヘルパー・プログラムは必要に応じてアプリケーションを保留し、デバッグ対象のジョブのキーと番号をデバッガーのデータ待ち行列 Q5BTEMP/DYNAMICATT に書き込みます。このキー・エントリーが使用可能になると、デバッガーはそのキー・エントリーを読み取って、関連するジョブ番号を取得し、このジョブに対してデバッグ・セッションを開始します。
デバッガーの準備が整うと、アプリケーションを再開する指定済みコマンドが発行され、アプリケーションが実行を継続できるようになります。 再開コマンドを指定していない場合、デバッガーはデータ待ち行列のインターフェースを通して指定されたジョブに接続します。
以下に、シナリオの例を示します。
アプリケーションが、プログラムを実行するバッチ・ジョブを実行依頼します。これらのジョブはすべて、同じユーザー・プロファイルで実行されます。実行依頼されたプログラムは、固有 ID をパラメーターとして取ります。特定の ID のジョブをデバッグしたいとします。メイン・アプリケーションには、この ID を取得するためのプロセス間メカニズムがあります。このジョブをデバッグするには、「IBM i: 動的ジョブのデバッグ」構成を作成し、この ID をキーとして指定し、保留されたプログラムを再開するコマンドを入力します。次に、指定した ID を使用してアプリケーションを実行します。メイン・アプリケーションは、ジョブを実行依頼する前に ID をチェックします。この ID がデバッグ対象の ID である場合は、保留中のこのジョブが実行依頼され、ジョブ番号がデバッグ・データ待ち行列に書き込まれます。アプリケーションには、デバッグ・データ待ち行列に書き込まれたすべてのジョブの ID とそれに対応するジョブ番号を記憶するためのデータ・ファイルもあります。保留されたプログラムを解放するには、ID を取得し、このデータ・ファイルでジョブを検索して、該当するジョブを解放します。