【问题标题】:Debugging Java servlet with jdb. How to attach jdb with Tomcat使用 jdb 调试 Java servlet。如何将 jdb 与 Tomcat 连接
【发布时间】:2024-04-27 11:05:01
【问题描述】:

我在进行配置后运行了一个 tomcat,当我在终端中键入 jdb 时,它显示正在初始化。所以我想知道

  1. 如何将 jdb 与 tomcat 连接并指定 servlet 名称。

  2. 在使用javac 编译 servlet 时包含调试符号的编译选项是什么(例如在 C 中,例如 -g 和 gdb)

我有opt/tomcat/apache-tomcat-10.0.10 所以我猜Tomcat版本是10

【问题讨论】:

  • 如何附加到 -> .class .o

标签: java tomcat jdb


【解决方案1】:

用于添加所有调试符号的javac 命令开关是...-g。默认情况下实际上添加了行号和源文件名,您只能获得有关局部变量的信息(请参阅this question)。

您无法将调试器连接到正在运行的 JVM,除非它是使用适当的命令行选项启动的(请参阅this question)。

Tomcat 有一个帮助脚本bin/catalina.sh 可以帮助您使用正确的参数启动它:

  • catalina.sh jpda start 在启用调试的情况下在后台启动 Tomcat。您可以通过以下方式连接到它:

    jdb -attach localhost:8000
    
  • catalina.sh jpda run 与前一种情况一样,但在前台,

  • catalina.sh debug 通过jdb 启动Tomcat。您只需要使用run 来启动它。

连接后,您可以使用:

stop in <class id>.<method>

添加断点。

备注javacjdb 现在都不常用了。大多数人使用 Ant、Maven、Gradle 等工具来编译他们的项目和 IDE 来调试代码。

【讨论】: