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

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

 2010-01-25 00:00:00 来源:WEB开发网   
核心提示: 在另一个窗口中,将 JDB 与 JVM 连接,调试集成 Java 和 C/C++ 的代码(5),在行上设置一个断点,将 GDB 与 JVM 连接,这些可以通过使用 -sourcepath 和 -classpath 选项在 JDB 的命令行中指定,另外一个方法是从这些文件的目录中运行 JDB,使

在另一个窗口中,将 JDB 与 JVM 连接。

在行上设置一个断点。

将 GDB 与 JVM 连接。

使 JDB 让 JVM 继续运行。

通过 GDB 窗口释放 VM。

遍历本机代码。

让我们更仔细地检查这些步骤。

步骤 1.第一步是在调试模式下运行 Java 程序,并将 Java 调试器与它连接。在以下示例中,我使用“Java 平台调试器体系结构(Java Platform Debugger Architecture,JPDA)”,而不使用较早的调试 Java 界面。


清单 1. 使用 JPDA,在调试模式下运行 Java 程序
C:\_jni\std>java -Xdebug -Xnoagent -Djava.compiler=none 
  -Xrunjdwp:transport=dt_socket,server=y,suspend=y JNITest 
Listening for transport dt_socket at address: 1060 

命令 suspend=y 使得当 VM 一旦建立调试器可以与之连接的端口时,它就立即停止。

步骤 2. 在另一个窗口中,将 JDB 与 JVM 连接。JDB 需要访问源代码和类文件。这些可以通过使用 -sourcepath 和 -classpath 选项在 JDB 的命令行中指定。另外一个方法是从这些文件的目录中运行 JDB。


清单 2. 将 JDB 与 JVM 连接
C:\_jni\std>jdb -attach 1060 
Initializing jdb... 
main[1] 
VM Started: No frames on the current call stack 
main[1] 

步骤 3. 然后我们可以在发生 System.loadLibrary 调用后在行上设置一个断点。


清单 3. 在行上设置断点
main[1] stop at JNITest:22 
Deferring breakpoint JNITest:22. 
It will be set after the class is loaded. 
main[1] run 
> Set deferred breakpoint JNITest:22 
Breakpoint hit: thread="main", JNITest.main(), line=22, bci=21 
 22     System.out.println(" ##### About to call native method "); 
main[1] 

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

Tags:调试 集成 Java

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