使用 jdb 调试 Java servlet。如何将 jdb 与 Tomcat 连接
Posted
技术标签:
【中文标题】使用 jdb 调试 Java servlet。如何将 jdb 与 Tomcat 连接【英文标题】:Debugging Java servlet with jdb. How to attach jdb with Tomcat 【发布时间】:2021-08-25 15:06:49 【问题描述】:我在进行配置后运行了一个 tomcat,当我在终端中键入 jdb
时,它显示正在初始化。所以我想知道
如何将 jdb 与 tomcat 连接并指定 servlet 名称。
在使用javac
编译 servlet 时包含调试符号的编译选项是什么(例如在 C 中,例如 -g 和 gdb)
我有opt/tomcat/apache-tomcat-10.0.10
所以我猜Tomcat版本是10
【问题讨论】:
如何附加到 ->.class
.o
【参考方案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>
添加断点。
备注:javac
和jdb
现在都不常用了。大多数人使用 Ant、Maven、Gradle 等工具来编译他们的项目和 IDE 来调试代码。
【讨论】:
以上是关于使用 jdb 调试 Java servlet。如何将 jdb 与 Tomcat 连接的主要内容,如果未能解决你的问题,请参考以下文章