4

这应该很容易,但是当 Tomcat 6 作为 RHEL 6.1 上的服务运行时,我无法在 Tomcat 6 上进行调试。

我在 /etc/tomcat6/tomcat6.conf 中添加了以下行

JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

当我重新启动tomcat 6服务时

service tomcat6 restart

命令行指示 Tomcat 关闭并启动,但它没有运行,当我查看 catalina.out 日志时,我看到了

ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.
Error occurred during initialization of VM
agent library failed to init: jdwp

尝试重新启动 Tomcat6 服务在关闭和启动时都失败。我必须重新启动 RHEL。

我认为Tomcat6可能默认以调试模式运行,但是当我注释掉tomcat6.conf中的行并使用netstat重新启动时,使用端口8000或Tomcat使用的任何端口都没有显示任何内容。

Tomcat 6 作为服务运行时可以在调试模式下运行吗?

4

3 回答 3

2

只需检查Catalina.sh文件中可用的端口号 8000即可。并检查是否有任何进程在同一个端口号 8000 中运行。

如果任何进程在同一端口上运行,则停止该进程并运行 jpda。

检查同一地址中的环境变量。catalina.sh 文件的 shell 脚本清楚地告诉它使用 8000 端口来执行它。

如果您想更改端口地址并在.bashrc文件中设置为

导出 JPDA_ADDRESS=8009

并执行命令

$ ./catalina.sh jpda run(普通方法)

如果您已使用安全管理器运行,那么

$ ./catalina.sh jpda 运行-安全

并转到Eclipse

转到 ->调试配置

将 Eclipse 配置为远程调试

首先,我们必须使用我们要调试的应用程序的源代码打开或导入项目。之后我们必须从 Eclipse 设置调试:

1) 点击工具栏中的“Debug”按钮(带有bug的按钮)的右侧(箭头朝上),然后点击“Debug configurations...”或菜单中的Run > Debug configurations... 然后将打开一个具有不同调试配置的新窗口。

调试配置

2) 在左侧菜单中选择“Remote Java Application”,然后点击“New launch configuration”按钮(左上角带有文件夹图标的按钮)。

新的调试配置

3)用我们的Tomcat实例对应的数据填充配置:

Project: The project we want to debug: it has to contain the source code for the application we want to debug.
Connection Type: Standard (Socket Attach).
Host: IP of the server in which is Tomcat installed.
Port: Port indicated to JVM in address parameter. Port 8000 in our example

Eclipse 什么都没有显示。eclipse中没有显示任何变化。

只需在需要的地方设置断点 ,然后在 tomcat 中运行应用程序。

!!!!!!成功调试模式将工作!!!!!!!!!

恭喜!!!!

通过sampath

于 2013-05-03T13:46:05.330 回答
1

再一次重启似乎已经解决了它。RHEL 现在正在侦听端口 8000,我可以附加一个远程调试器。

诡异的。

于 2012-12-07T21:41:47.057 回答
0

我有同样的错误,原因是https://bugzilla.redhat.com/show_bug.cgi?id=899458。解决方法是删除以下行/usr/sbin/tomcat6

# Get the tomcat config (use this for environment specific settings)
if [ -z "${TOMCAT_CFG}" ]; then
  TOMCAT_CFG="/etc/tomcat6/tomcat6.conf"
fi

if [ -r "$TOMCAT_CFG" ]; then
  . $TOMCAT_CFG
fi

您的问题可能有所不同(否则没有理由重新启动工作),但我要离开这个,以便搜索错误消息的人可以找到它。

于 2013-04-08T07:55:14.817 回答