这应该很容易,但是当 Tomcat 6 在 RHEL 6.1 上作为服务运行时,我无法调试它。
我在/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 可能默认在 Debug模式下运行,但是当我注释掉 tomcat6.conf 中的行并使用 netstat -an 重新启动时,没有显示任何使用端口 8000 或 Tomcat 使用的任何端口。
Tomcat 6 作为服务运行时能否在 Debug模式下运行?
最佳答案
只需检查 Catalina.sh 文件中可用的 PORT number 8000 即可。并检查是否有任何进程在相同的端口号 8000 中运行。
如果有任何进程在同一端口上运行,则停止该进程并运行 jpda。
检查同一地址中的env变量。 catalina.sh 文件的shell 脚本清楚地告诉它使用端口8000 来执行它。
如果您想更改端口地址并在您的.bashrc 文件中设置 作为
导出 JPDA_ADDRESS=8009
并执行命令
$ ./catalina.sh jpda run(普通方法)
如果你已经使用安全管理器运行
$ ./catalina.sh jpda run -security
然后转到Eclipse
转到 -> 调试配置
配置Eclipse进行远程调试
首先,我们必须打开或导入包含我们要调试的应用程序源代码的项目。之后我们必须从 Eclipse 设置调试:
1) 单击工具栏中“调试”按钮(带有错误的按钮)的右侧(指向上方的箭头),然后单击“调试配置...”或在菜单“运行”>“调试”中配置...然后将打开一个具有不同调试配置的新窗口。
调试配置
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 中没有显示任何更改。
只需在 eclipse 中您需要的地方设置断点,然后在 tomcat 中运行应用程序。
<强>!!!!!!成功 Debug模式将工作!!!!!!!!
恭喜!!!!!
来自 sampath
关于tomcat - 在 RHEL 上作为服务运行时如何以 Debug模式启动 Tomcat 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13771112/