JVMTI 未加载

发布于 2024-12-22 02:51:40 字数 436 浏览 2 评论 0原文

我正在尝试使用 JVMTI 来用 C++ 编写一个小型 Java 调试器。 我在这里读到:
http://java.sun.com/developer/technicalArticles/Programming/jvmti/
JVM 应该调用定义如下的导出方法
JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *jvm, char *options, void *reserved)

但是,即使我启动了 java 目标程序,当我运行调试器时也没有看到此方法被调用。
这是启动 JVMTI 的正确方法吗? java程序启动时会自动调用吗?

I'm trying to use the JVMTI in order to write a little Java debugger in C++.
I read here:
http://java.sun.com/developer/technicalArticles/Programming/jvmti/
that the JVM should call an exported method defined like
JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *jvm, char *options, void *reserved)

But I don't see this method called when I run my debugger even if I start my java target program.
Is this the correct way to start this JVMTI? Is it supposed to be called automatically when a java program is started?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

十年九夏 2024-12-29 02:51:40

当您在调用 Java 程序时提供“-agentlib”命令行参数时,会加载调试代理代码,例如:

$java -agentlib:jvmti_debugger javaSampleClass

有关它的最新文章位于 此处

The debug agent code is loaded when you supply "-agentlib" command-line argument while calling a Java program, like:

$java -agentlib:jvmti_debugger javaSampleClass

A little more recent article about it is located here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文