CICS®の JVMは、Javaプラットフォームで提供される標準的なデバッグ機構であるJava™プラットフォーム・デバッガー・アーキテクチャー(JPDA)をサポートしています。
このタスクについて
CICS 上で実行されているJavaアプリケーションのデバッグには、JDPAをサポートする任意のツールを使用できます。 例えば、 z/OS®の Java SDKに付属するJavaデバッガ(JDB)を使用することができます。JPDAリモートデバッガをアタッチするには、JVMプロファイルでいくつかのオプションを設定する必要があります。
注: JPDAを使用すると、オペレーティングシステムのスレッド用に大きなスタックサイズが必要になる場合があります。 動作スレッドのスタック・サイズは、JVM プロファイルでオプション -Xmso を使用して構成できます。 人為的に制約された値がないか、既存のプロファイルを見直す必要がある。 デフォルトのスタック・サイズは 1M であり、これは 64 ビット JVM のスタック・サイズと一致します。
IBM®は、Health Center を含む Java 用の監視および診断ツールを提供しています。 IBM ヘルスセンターは IBM ワークベンチで利用できる。 Support Assistant これらの無料ツールは、 IBM Health Centerの Getting Startedガイドに記載されているように、 IBM からダウンロードできます。
手順
- 以下のように、デバッグ・オプションを JVM プロファイルに追加して、JVM をデバッグ・モードで開始します。
-agentlib:jdwp=transport=dt_socket,server=y,address=hostname:port,suspend=n
リモートでデバッガーに接続するための空きポートを選択します。
JVM プロファイルが複数の JVM サーバーで共用される場合、別の JVM プロファイルをデバッグに使用できます。
Java 11 Java 17 Java 21 Java 11、Java 17、またはJava 21 JVMのリモートデバッグを可能にするには、 agentlibプロパティには明示的な hostname:port。 Javaランタイムに接続してデバッグを成功させるには、ポートを指定するだけでは不十分です。
6.3 Java 8 および Java 11 のサポートは、 CICS TS 6.3 をもって終了しました。
注 :サスペンドのデフォルト値は 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の強制終了をサポートしており、これにより異常終了が発生し、 CICSにエラーメッセージが表示されます。