当前位置: 首页 > 面试题库 >

Java JVMTI不能与-Xdebug -Xrunjdwp一起使用

羊时铭
2023-03-14
问题内容

我花了最后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不是有效的设置?


问题答案:

到目前为止,没有一个答案是正确的,如果您查询提到的错误,这是Google上的第一个匹配项,因此,我认为需要进行一些澄清。

JVMTI和JDWP 可以 一起工作,实际上,它们通常必须一起使用。ERROR: JDWP unable to get necessary JVMTI capabilities如果在命令行上多次-Xrunjdwp(和/或可能-agentlib:jdwp)指定了您,将会得到提示。要解决此问题,请确保命令行中只有-Xrunjdwp-agentlib:jdwp之一。

有关更多详细信息,请继续阅读…

JVMTI(Java虚拟机工具接口)是JVMDI(Java虚拟机调试接口)和JVMPI(Java虚拟机概要分析接口)的后继产品。它合并了JVMDI和JVMPI的功能,这两个功能在Java
5中已弃用,而在Java 6中已删除。这是API,它公开了JVM内部以进行调试和配置

JDWP(Java调试线协议)是一种协议,它描述了一种用于传输命令和响应的简单机制。据我所知,这是坐在JVM外部的调试器与之通信并与JVMTI交互的唯一方法。

JDI(Java调试器接口)是一种客户端(调试器)API,它公开了JVMTI的某些功能,同时或多或少透明地使用了JDWP。

Bob
Dobbs的答案中提到的错误涉及误导性错误消息,以及JVM在每次在命令行上指定JDWP时都会尝试加载一次的事实。它没有声明JDWP和JVMTI不能一起使用。

此处提供更多信息:https
:
//www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzaha/jpdebuga.htm



 类似资料:
  • 我试图用DataJpaTest注释测试我的存储库,但出现了一些奇怪的情况。 当我使用经典的时,一切正常,我的测试成功了。但是当我使用下面的生成器时,我的测试失败了。 测试应该成功,但其他测试没有成功,因为没有抛出关于约束有效性的异常。 例如,这里有一个失败的断言: Java语言AssertionError:预期测试将抛出org的实例。springframework。道。DataIntegrityV

  • 我的application.properties文件中有以下属性。 当我使用注释在spring控制器中使用属性时,它给我的值为2003,但当我通过获得它的值时,我获得的值为 如何使用AbstractenVironment获得值2003?

  • 问题内容: 我已经使用Selenium和最初的PhantomJS开发了一些Python脚本。在走向自动下载时,我改用了(带头的)Firefox(运行了),然后选择了无头选项的Chrome,这样我就不会打开浏览器了。 我的第一个脚本访问一个页面和几个HTML元素,与无头Chrome完美搭配。 但是第二个 仅适用于带头的Chrome 。如果添加“无头”选项,它将不再起作用。当我尝试以无头模式打印HTM

  • 我下载了Xdebug,它似乎已经安装,我的中有Xdebu,设置如下: 我尝试过添加一个参数< code>http://localhost/test.php?XDEBUG_SESSION=PHPSTORM,并使用Xdebug Chrome扩展来更改phpinfo()中的IDE键,但我仍然无法触发XDEBUG。 PhpStorm 正在侦听端口 9000,我已经使用 9000 确认了这一点,并且 Xde

  • 问题内容: 我正在尝试将反斜杠替换为其他字符串。由于某些奇怪的原因,replaceAll函数不喜欢反斜杠。 我应该怎么做才能解决这个问题。 谢谢。 问题答案: 您需要将每个反斜杠加倍(再次),因为replaceAll()使用的Pattern类将其视为特殊字符: Java字符串将反斜杠视为转义字符,因此replaceAll看到的是:。但是replaceAll还将反斜杠视为转义字符,因此正则表达式成为

  • 问题内容: 我是Spring MVC框架的新手,但遇到一个我自己无法解决的问题。当我将Spring Security与我的应用程序集成后,一切都开始了,之后HTML表单中的所有unicode值都未编码(Spring Security正常工作)。我得出的结论是,发生这种情况的原因可能是因为我·被称为链中的第一个过滤器。 这是我认为可以使用的配置,但无效: 1)我正在从Javadoc扩展Abstrac