🌿
Spring BootアプリケーションをBytemanでデバッグする
概要
Spring BootアプリケーションをBytemanでデバッグする方法(というかコマンド)のメモです。
Bytemanに限らずエージェント全般に適用できる内容です。
ここから先は次の事項を前提とします。
- 環境変数
BYTEMAN_HOME
が指すパスにBytemanが置かれていること - カレントディレクトリの
demo.btm
にBytemanスクリプトが書かれていること
Spring Boot Maven Pluginで実行する場合
Spring Boot Maven Pluginのrun
ゴールにagents
というパラメーターがあり、それを使用してエージェントを設定できます。
mvn spring-boot:run \
-Dspring-boot.run.agents="$BYTEMAN_HOME/lib/byteman.jar=script:demo.btm"
実行可能JARで実行する場合
普通にjava
コマンドの-javaagent
パラメーターで設定します。
java -javaagent:$BYTEMAN_HOME/lib/byteman.jar=script:demo.btm \
-jar target/myapp.jar
コンテナで実行する場合
Spring Boot Maven Pluginのbuild-image
ゴールで特に設定(ビルダーやビルドパック)を変えずにコンテナイメージを生成しているとします。
環境変数JAVA_TOOL_OPTIONS
を使用して-javaagent
パラメーターで設定できます。
docker run --rm \
-e JAVA_TOOL_OPTIONS="-javaagent:/tmp/byteman.jar=script:/tmp/demo.btm" \
-v $BYTEMAN_HOME/lib/byteman.jar:/tmp/byteman.jar:ro \
-v $PWD/demo.btm:/tmp/demo.btm:ro myapp:latest
以上です。
Discussion