是否有任何调试器可以帮助调试 Java JNI 程序以及 C 库?
我应该能够在Java中从static void main开始调试程序,并继续调试并在本机c函数中放置断点,然后在控制权从C转移到Java后继续在Java中调试。
Java 虚拟机调试器与本机代码调试器有很大不同。目前还没有一种成熟的解决方案能够像同一个调试器那样能够无缝地从 Java 到本机代码并返回。虽然这是一个非常令人恼火的问题,使得一些聪明的人试图开发这样的解决方案,但毫无疑问,其中涉及大量难以想象的问题。我个人是按照以下方式进行的:
- 在调试模式下启动 Java 代码,并在您感兴趣的第一个本机调用处放置断点。您甚至可以实现静态本机调用,这不会执行任何重要操作,但可以让您尽快中断。
- 启动本机调试器。这绝对可以是 Eclipse 的同一个实例,给定两个先决条件:您已经安装了 CDT,并且您的本机代码是以 CDT 可以理解调试信息的方式进行编译的。附加到
java(w.exe)
运行 Java 代码的进程。在本机代码中放置断点。
- 每当您需要通过 JNI 接口进行转换时,请尽可能(或需要)将断点放置在靠近调用入口/出口的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)