我想调试使用我编写的 jvmti 代理的 java 应用程序。这似乎仅在 jvmti 代理未尝试启用“can_generate_breakpoint_events”功能时才有效。
尝试启用断点功能并在调试模式下启动应用程序会导致以下错误:
ERROR: JVMTI: 98(Unknown): Unable to get necessary JVMTI capabilities. [..\src\agent.cpp:437]
有什么方法可以调试使用设置断点的 jvmti 代理的应用程序?
我检查了Java JVMTI 不能与 -Xdebug -Xrunjdwp 一起工作,但接受的答案似乎并不正确,因为它似乎也确实取决于启用的功能。
我知道分析器(如 YourKit 等)也在使用 jvmti 代理,并且仍然允许您在调试模式下运行您的应用程序(好吧,也许他们只是没有使用导致这些冲突的功能)。