我花了最后 4 个小时尝试在必须远程运行的 Tomcat 实例上设置 Eclipse TPTP 内存分析(即不在 Eclipse 中)。根据 TPTP 和代理控制器文档,这应该是可能的。
我根据网站上的说明将 TPTP 组件 (4.6.0) 与代理控制器一起安装到了我的 Eclipse (Galileo) 工作台中。为了启用代理,我在启动 Tomcat 实例的命令行中添加了以下选项:
-agentlib:JPIBootLoader=JPIAgent:server=enabled;HeapProf:allocsites=true
并将以下目录添加到 PATH 的前面:
D:\dev\tools\ac\plugins\org.eclipse.tptp.javaprofiler
D:\dev\tools\ac\bin
尝试启动 Tomcat 时,我一直收到以下错误消息:
ERROR: JDWP unable to get necessary JVMTI capabilities. ["debugInit.c",L279]
我做了很多谷歌搜索,但没有发现任何相关信息;我尝试重新安装 TPTP 和各种版本的代理控制器。
最后问题是我使用“jpda”选项启动Tomcat,catalina.bat 转换为
-Xdebug -Xrunjdwp:transport=.....
删除“jpda”命令参数导致 JVMTI 开始工作。
所以,问题是:在我的任何搜索过程中,我都没有发现任何 JVMTI 代理与调试不兼容。有人可以解释发生了什么以及为什么 JVMTI + JDWP 不是有效的设置吗?