Java アプリケーションのデバッグ

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 からダウンロードできます。

手順

  1. 以下のように、デバッグ・オプションを JVM プロファイルに追加して、JVM をデバッグ・モードで開始します。
    -agentlib:jdwp=transport=dt_socket,server=y,address=port,suspend=n
    リモートでデバッガーに接続するための空きポートを選択します。
    JVM プロファイルが複数の JVM サーバーで共用される場合、別の JVM プロファイルをデバッグに使用できます。
    注: 中断のデフォルト値は yです。 この値は JVM を一時停止し、リモートクライアントデバッガーがアタッチされるまで処理を続行しません。 値 n を指定すると、JVM サーバーが中断されなくなります。
  2. Liberty トレースでのホット・スワップの複雑さを避けるには、Liberty JVM サーバーのデバッグを行うときに、以下のプロパティーを JVM プロファイルに追加します。 これは、Liberty がデバッグ認識モードで作動しなくてはならないことを Liberty に対して示すことにもなります。
    -Dwas.debug.mode=true
    -Dcom.ibm.websphere.ras.inject.at.transform=true 
  3. デバッガーを JVM に接続します。
    接続中にエラーが発生する場合 (ポート値が間違っている場合など)、JVM の標準出力ストリームと標準エラー・ストリームにメッセージが書き込まれます。
  4. デバッガーを使用して、JVM の初期状態を確認します。 例えば、開始されたスレッドの ID やロードされたシステム・クラスを確認します。
  5. 完全な Java クラス名とソース・コード行番号を指定して、Java アプリケーション内の適切なポイントにブレークポイントを設定します。 デバッガーが、このブレークポイントの活動化が延期されることを示した場合、それはクラスがまだロードされていない可能性があるためです。
    JVM が CICS ミドルウェアコードを実行し、アプリケーションのブレークポイントに到達するまで進ませる。その時点で、再び実行を中断する。
  6. ロードされたクラスと変数のソース・コードを調べ、追加のブレークポイントを設定して、必要に応じてコードをステップスルーします。
  7. デバッグ・セッションを終了します。 アプリケーションを最後まで実行させることができます。その時点で、デバッガーと CICS JVM との接続は閉じられます。 一部のデバッガは、 JVM の強制終了をサポートしています。これにより、 CICS システムコンソール上で異常終了(ABEND)とエラーメッセージが発生します。