CICS® の JVM は、Java™ Platform Debugger Architecture (JPDA) をサポートします。これはJavaプラットフォームで提供される標準的なデバッグ機構です。
このタスクについて
JLPA をサポートする任意のツールを使用して、 CICSで実行されている Java アプリケーションをデバッグできます。 たとえば、 z/OS® の Java SDK に含まれる Java デバッガー (JDB) を使用できます。JPDA リモートデバッガーをアタッチするには、 JVM プロファイルでいくつかのオプションを設定する必要があります。
注: JPDA を使用するには、オペレーティング・システム・スレッド用により大きなスタック・サイズが必要になる場合があります。 動作スレッドのスタック・サイズは、JVM プロファイルでオプション -Xmso を使用して構成できます。 既存のプロファイルで、人為的に制限された低い値があるかどうかを調べてください。 デフォルトのスタック・サイズは 1M であり、これは 64 ビット JVM のスタック・サイズと一致します。
IBM® は、Health Center を含む Java 用のモニター・ツールと診断ツールを提供します。 IBM Health Center は、 IBM Support Assistant Workbench で入手できます。 これらの無料ツールは、 IBM Health Centerの「入門ガイド」で説明されているように、 IBM からダウンロードできます。
手順
- 以下のように、デバッグ・オプションを JVM プロファイルに追加して、JVM をデバッグ・モードで開始します。
-agentlib:jdwp=transport=dt_socket,server=y,address=port,suspend=n
リモートでデバッガーに接続するための空きポートを選択します。
JVM プロファイルが複数の JVM サーバーで共用される場合、別の JVM プロファイルをデバッグに使用できます。
注: 中断のデフォルト値は yです。 この値は JVM を一時停止し、リモートクライアントデバッガーがアタッチされるまで処理を続行しません。 値 n を指定すると、JVM サーバーが中断されなくなります。
- Liberty トレースでのホット・スワップの複雑さを避けるには、Liberty JVM サーバーのデバッグを行うときに、以下のプロパティーを JVM プロファイルに追加します。 これは、Liberty がデバッグ認識モードで作動しなくてはならないことを Liberty に対して示すことにもなります。
-Dwas.debug.mode=true
-Dcom.ibm.websphere.ras.inject.at.transform=true
- デバッガーを JVM に接続します。
接続中にエラーが発生する場合 (ポート値が間違っている場合など)、JVM の標準出力ストリームと標準エラー・ストリームにメッセージが書き込まれます。
- デバッガーを使用して、JVM の初期状態を確認します。 例えば、開始されたスレッドの ID やロードされたシステム・クラスを確認します。
- 完全な Java クラス名とソース・コード行番号を指定して、Java アプリケーション内の適切なポイントにブレークポイントを設定します。 デバッガーが、このブレークポイントの活動化が延期されることを示した場合、それはクラスがまだロードされていない可能性があるためです。
JVM が CICS ミドルウェアコードを実行し、アプリケーションのブレークポイントに到達するまで進ませる。その時点で、再び実行を中断する。
- ロードされたクラスと変数のソース・コードを調べ、追加のブレークポイントを設定して、必要に応じてコードをステップスルーします。
- デバッグ・セッションを終了します。 アプリケーションを最後まで実行させることができます。その時点で、デバッガーと CICS JVM との接続は閉じられます。 一部のデバッガは、 JVM の強制終了をサポートしています。これにより、 CICS システムコンソール上で異常終了(ABEND)とエラーメッセージが発生します。