JAVA JNI C 调试器

Rom*_*aan 5 c java java-native-interface

是否有任何调试器可以帮助调试 Java JNI 程序以及 C 库?

我应该能够在Java中从static void main开始调试程序,并继续调试并在本机c函数中放置断点,然后在控制权从C转移到Java后继续在Java中调试。

Pav*_*nek 4

Java 虚拟机调试器与本机代码调试器有很大不同。目前还没有一种成熟的解决方案能够像同一个调试器那样能够无缝地从 Java 到本机代码并返回。虽然这是一个非常令人恼火的问题,使得一些聪明的人试图开发这样的解决方案,但毫无疑问,其中涉及大量难以想象的问题。我个人是按照以下方式进行的:

  1. 在调试模式下启动 Java 代码,并在您感兴趣的第一个本机调用处放置断点。您甚至可以实现静态本机调用,这不会执行任何重要操作,但可以让您尽快中断。
  2. 启动本机调试器。这绝对可以是 Eclipse 的同一个实例,但有两个先决条件:您安装了 CDT 并且您的本机代码是以 CDT 可以理解调试信息的方式编译的。附加到java(w.exe)运行 Java 代码的进程。在本机代码中放置断点。
  3. 每当您需要通过 JNI 接口进行转换时,请尽可能(或需要)将断点放置在靠近调用入口/出口的位置。