JAVA JNI C调试器

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

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

Java虚拟机调试器与本机代码调试器非常不同。 目前没有这样的MATURE解决方案作为同一个调试器,它能够无缝地从Java步进到本机代码并返回。 虽然这是一个非常棘手的问题,这使得一些聪明的人试图开发这样的解决方案,但毫无疑问涉及到许多不可想象的问题。 我个人以下列方式做到这一点:

  1. 在调试模式下启动Java代码并在您感兴趣的第一个本机调用上放置一个断点。您甚至可以实现静态本机调用,它不会做任何重要的事情,但会使您尽快中断。
  2. 启动本机调试器。 这绝对可以是Eclipse的同一个实例 ,给出两个先决条件:您已安装CDT并且您的本机代码以某种方式编译,CDT可以理解调试信息。 附加到运行Java代码的java(w.exe)进程。 在本机代码中放置一个断点。
  3. 无论何时需要转换JNI接口,都应尽可能地将断点放在呼叫进入/退出的位置。