java - 通过 JNI 内部调用 JVM 函数

标签 java c jvm java-native-interface

当从 Java(使用 JNI)调用 C 中定义的方法时,JVM 内部会调用哪些方法?执行流程是什么样的?

  1. 即考虑一个方法public native void display() 。当从 java 代码调用此方法时 object.display() ,在执行 native 代码时调用的内部 JVM 方法是什么?
  2. 在哪里可以找到更多相关文档?或者,我可以查看和跟踪源代码中的哪个 JVM 函数?

最佳答案

如果您想查看确切的执行链,我建议使用 gdb(或 CLion)连接到 JVM 并查看回溯。

看看这里,看看如何做到这一点:

http://www.owsiak.org/?p=2095

您还可以在这里查看:

https://www.youtube.com/watch?v=8Cjeq4l5COU

一旦连接到 JVM,您就可以在 C 代码中设置断点并从上到下检查回溯。

或者,您可以创建 SIGSEGV 并生成 JVM 的完整回溯(请查看此处: http://jnicookbook.owsiak.org/recipe-No-015/ )

关于java - 通过 JNI 内部调用 JVM 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44422146/

相关文章:

java - hashMap的put方法覆盖已存储数据的值

java - 缺少 `server' JVM (Java\jre7\bin\server\jvm.dll。)

c - 共享库函数什么时候加载到堆中?

c - 无法从 C 中的 argv[1] 获取文件名

java - 如何查看tomcat是否正在运行

java - 检查 Java "assembly"?

java - Magnolia 富文本字段

java - 将字符串从 ElementValue 转换为数组

java - 如何在执行另一个测试后立即执行另一个测试?

c - 通过 ID 在文本文件中搜索名称