gpt4 book ai didi

Java JVMTI 不能与 -Xdebug -Xrunjdwp 一起工作

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:50 24 4
gpt4 key购买 nike

我花了最后 4 个小时尝试设置 Eclipse TPTP 内存在必须远程运行的 Tomcat 实例上进行分析(即不在 eclipse )。根据 TPTP 和代理,这应该是可能的 Controller 文档。

我将 TPTP 组件 (4.6.0) 安装到我的 Eclipse (Galileo) 中工作台,以及根据代理 Controller 网站上的说明。为了启用代理,我添加了启动 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 和各种版本的代理 Controller 。

最后发现是我启动Tomcat的问题使用“jpda”选项,catalina.bat 将其转换为

-Xdebug -Xrunjdwp:transport=.....

删除“jpda”命令参数导致 JVMTI 开始工作。

所以,问题是:我在任何搜索过程中都没有找到指示 JVMTI 代理与调试不兼容。能有人解释发生了什么以及为什么 JVMTI + JDWP 无效设置?

最佳答案

到目前为止,没有一个答案是正确的,如果您查询提到的错误,这是 Google 上出现的第一个结果,所以我觉得需要一些澄清。

JVMTI 和 JDWP 确实一起工作,实际上它们通常必须一起使用。如果 -Xrunjdwp(和/或可能 -agentlib:jdwp)指定的次数超过一次在命令行上。要修复它,请确保您的命令行中只有 -Xrunjdwp-agentlib:jdwp 之一。

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

JVMTI(Java 虚拟机工具接口(interface))是 JVMDI(Java 虚拟机调试接口(interface))和 JVMPI(Java 虚拟机分析接口(interface))的继承者。它结合了 JVMDI 和 JVMPI 的功能,这两者在 Java 5 中已弃用并在 Java 6 中被删除。它是公开 JVM 内部结构以进行调试和分析的 API。

JDWP(Java Debug Wire Protocol)是一种描述传输命令和响应的简单机制的协议(protocol)。据我所知,这是位于 JVM 外部的调试器与其通信并与 JVMTI 交互的唯一方法。

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

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

更多信息在这里:https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzaha/jpdebuga.htm

关于Java JVMTI 不能与 -Xdebug -Xrunjdwp 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1562979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com