WEB开发网
开发学院软件开发Java 调试集成 Java 和 C/C++ 的代码 阅读

调试集成 Java 和 C/C++ 的代码

 2010-01-25 00:00:00 来源:WEB开发网   
核心提示: 对于这个方法,应用程序需要使用“调用 API(Invocation API)”,调试集成 Java 和 C/C++ 的代码(4),它允许您将 JVM 装入到任意本机应用程序中,实际上,如果不希望使用 JDB,可以将 Java 设置为发生 System.loadLibrar

对于这个方法,应用程序需要使用“调用 API(Invocation API)”,它允许您将 JVM 装入到任意本机应用程序中。实际上,所有 Java 程序都使用“调用 API”启动。 java.exe 的启动程序使用“调用 API”来启动 VM,然后运行 main 类,尽管这样做会产生许多命令处理以及设置的开销。关键问题是从您的角度来看,Java 程序是如何启动的。

调用 JNI 方法样本代码
我已经准备了一些样本代码来演示调用 JNI 方法。

下载包含了以下五个文件:

jvm.def

libjvm.a

main.c

main.exe

main.o

这个代码示例使用与标准样本相同的类。 main.c 是编译到可执行文件中的 C 代码。它首先执行的是创建带调试选项的 JVM。(始终记住要正确设置选项的个数。)

goTest() 方法调用进入到 Java 类的 static 方法中。(设置为 static 使 JNI 代码更简单。)紧接在 goTest() 方法的前面,有一个无限循环。这个循环用在这里是出于调试方面的原因,我将在后面进行说明。

调试标准程序

现在让我们开始调试。设想需要启动 Java 程序,然后将 C 调试器与那个 Java 程序进程连接。有可能使用一些调试器,(比如 Visual C++)来直接运行 Java 可执行文件。使用这种方法,需要将您的 DLL 添加到附加的 DLL 列表中;否则,运行应用程序时,将无法设置断点。

Java 应用程序有一个可以动态装入 DLL 的 System.loadLibrary 调用。(注:本例演示了如何同时使用 JDB 和 GDB 进行调试。如果不希望使用 JDB,可以将 Java 设置为发生 System.loadLibrary 后停止等待用户的输入。)按照如下步骤进行操作:

在调试模式下运行 Java 程序。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:调试 集成 Java

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接