Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何';如果JVMTI不是跨平台的,那么JDI是什么?_Java_Jvm_Jvm Hotspot_Jvmti_Jdi - Fatal编程技术网

Java如何';如果JVMTI不是跨平台的,那么JDI是什么?

Java如何';如果JVMTI不是跨平台的,那么JDI是什么?,java,jvm,jvm-hotspot,jvmti,jdi,Java,Jvm,Jvm Hotspot,Jvmti,Jdi,所以Java的调试接口使用JVMTI作为后端…但是JVMTI需要在目标体系结构上编译,那么这些JVMTI函数是由JDI预先编译并作为库随JDK一起提供的吗?这意味着我可以在不使用JDI的情况下使用这些预编译库……对吗?我假设只有少数几个函数已经编译好了,但是如果我确实需要这些函数,那么我就不需要亲自编译它们了……请看: /|--------------| /| VM| 调试对象----(|-------------|有没有办法不使用JDI调用此本机库?因此,在不以调试模式启动应用程序的情况下…@

所以Java的调试接口使用JVMTI作为后端…但是JVMTI需要在目标体系结构上编译,那么这些JVMTI函数是由JDI预先编译并作为库随JDK一起提供的吗?这意味着我可以在不使用JDI的情况下使用这些预编译库……对吗?我假设只有少数几个函数已经编译好了,但是如果我确实需要这些函数,那么我就不需要亲自编译它们了……

请看:

/|--------------|
/| VM|

调试对象----(|-------------|有没有办法不使用JDI调用此本机库?因此,在不以调试模式启动应用程序的情况下…@Nfff3因为JVMTI是本机接口,本机软件可以使用它。当您按照此答案中给出的链接获取此接口的描述时。这并不意味着您可以使用我们您只需将“在调试模式下”即“使用jdwp代理”与“使用我的JVMTI代理”交换即可.@Nfff3 JDWP agent是一个JVM TI代理,它只支持附加到JVM的加载时间。为了使用该代理,必须在JVM命令行参数中指定它。这实际上与“在调试模式下启动应用程序”相同。谢谢,我现在明白了。基本上,“调试”没有什么特别之处它只是意味着一个JVTMI代理(称为JDWP)当应用程序启动时加载。这个本机代理在套接字上与JDI通信,这与语言无关。我对此感兴趣,因为我有一个用例,我想在短时间内多次调用一些JDI方法,并希望减少执行时间。也许我可以修改JDWP代理,以便能够调用通过JNI从Java执行操作,不使用套接字。也许会更快。
                /    |--------------|
               /     |     VM       |
 debuggee ----(      |--------------|  <------- JVM TI - Java VM Tool Interface
               \     |   back-end   |
                \    |--------------|
                /           |
 comm channel -(            |  <--------------- JDWP - Java Debug Wire Protocol
                \           |
                     |--------------|
                     | front-end    |
                     |--------------|  <------- JDI - Java Debug Interface
                     |      UI      |
                     |--------------|