我花了最近4个小时试图在远程运行的Tomcat实例上设置Eclipse TPTP内存分析,但一直未能成功。 根据TPTP和代理控制器文档,这应该是可行的。
我按照网站上的说明,在我的Eclipse(Galileo)工作台上安装了TPTP组件(4.6.0),并安装了代理控制器。为了启用代理,我添加了以下选项到启动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 agent与调试不兼容。能否有人解释一下发生了什么,为什么JVMTI + JDWP不是一个有效的设置?
-agentpath=jdvmi.so
和-Xrunjdwp:transport…
,否则无法分配JVMTI代理和启用远程调试接口。没有办法仅指定jdvmi代理和jwp传输选项,而不使用两者。 - gabriel