Tomcatのデバッグ
VS Code でデバッグを行います。Tomcat で動作しているアプリに接続(Attach)します。
tomcat の設定
Tomcat に接続するための設定を行います。Tomcat 起動時に参照するオプションを追加します。 設定ファイルを編集します。
sudo systemctl edit --full tomcat10
[Service]にEnvironment="CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:8000,server=y,suspend=n"を追加します。
備考
Environmentの各行は、1行で入力してください。
[Service]
# Configuration
Environment="CATALINA_HOME=/usr/share/tomcat10"
Environment="CATALINA_BASE=/var/lib/tomcat10"
Environment="CATALINA_TMPDIR=/tmp"
Environment="JAVA_OPTS=-Djava.awt.headless=true"
Environment="CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:8000,
server=y,suspend=n" # この1行を追加
Tomcat を再起動します。
sudo systemctl restart tomcat10
設定が有効になっていることを確認します。ポート番号8000でリッスンしているプログラムが存在することを確認します。
ss -tunlp | grep 8000
tcp LISTEN 0 1 127.0.0.1:8000 0.0.0.0:*
注記
デバッグは同時に一人のユーザーしかできません。デバッグ中は、ポート番号8000はリッスンではありません。-lを付けずにssコマンドを実行すると確認できます。
ss -tunp | grep 8000
次のような結果が表示されます。
tcp ESTAB 0 0 127.0.0.1:8000 127.0.0.1:50308
tcp ESTAB 0 0 [::ffff:127.0.0.1]:50308 [::ffff:127.0.0.1]:8000
users:(("java",pid=88981,fd=156))
デバッグ
VS Code の「実行とデバッグ」アイコンをクリックします。「Attach to Tomcat10 (WSL)」を選択して、「▷」ボタンをクリックします。
HelloServlet.javaの任意の場所にブレークポイントを設定します。
ブラウザーでリクエストするとブレークポイントで停止します。
