Eclipse を使用して Java Service Fabric アプリケーションをデバッグする
「 Service Fabric 開発環境の設定」にある手順に従って、ローカル開発クラスターを開始してください。
デバッグするサービスの entryPoint.sh を更新して、リモートのデバッグ パラメーターで Java プロセスを開始するようにします。 このファイルは次の場所にあります:
ApplicationName\ServiceNamePkg\Code\entrypoint.sh
。 この例では、デバッグ用にポート 8001 が設定されています。java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -jar myapp.jar
アプリケーション マニフェストを更新して、デバッグするサービスのインスタンス数またはレプリカ数を 1 に設定します。 この設定により、デバッグに使用されるポートの競合を回避できます。 たとえば、ステートレス サービスについては、
InstanceCount="1"
と設定し、ステートフル サービスについては、TargetReplicaSetSize="1" MinReplicaSetSize="1"
のように設定して、レプリカ セット サイズのターゲット値と最小値を 1 にします。アプリケーションをデプロイします。
Eclipse IDE で、[実行] -> [デバッグ構成] -> [リモート Java アプリケーション] を選択し、接続プロパティを次のように設定します。
Host: ipaddress Port: 8001
必要なポイントにブレークポイントを設定し、アプリケーションをデバッグします。
アプリケーションがクラッシュする場合は、コアダンプを有効にすることもできます。 シェル内で ulimit -c
を実行し、ゼロが返された場合は、コアダンプが無効になっています。 無制限コアダンプを有効にするには、次のコマンドを実行します: ulimit -c unlimited
。 また、コマンド ulimit -a
を使用して状態を確認することもできます。 コアダンプの生成パスを更新する場合は、echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern
を実行します。