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

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

 2010-01-25 00:00:00 来源:WEB开发网   
核心提示: 请注意,在 JDB 中设置断点有两种方法,调试集成 Java 和 C/C++ 的代码(6),一种方法称为 stop in;另一种称为 stop at, stop at用于在指定的行上停止; stop in用于在特定方法或类中的断点,使它可以按正常工作时那样运行, 步骤 6. 在 GDB 窗口中输

请注意,在 JDB 中设置断点有两种方法。一种方法称为 stop in;另一种称为 stop at。 stop at用于在指定的行上停止; stop in用于在特定方法或类中的断点。

这时,JVM 已经停止执行,但从操作系统的角度来看,应用程序仍旧是正常运行。它将看见从 JDB 进程到 JVM 进程的连接。

步骤 4.现在可以将 GDB 与 JVM 进程连接。为此,需要知道进程的标识(PID)。可以使用任务管理器或者使用比如 listdlls(来自于 SysInternals.com )这样的工具来获得。 -nw -quiet 选项启动 GDB,此时的界面不是图形方式并且没有正在启动的版本信息。


清单 4. 将 GDB 与 JVM 进程连接
C:\_jni\std>gdb -nw -quiet 
(gdb) attach 1304 
Attaching to process 1304 
[Switching to thread 1304.0x2b8] 
(gdb) break jnitest.c:15 
Breakpoint 1 at 0x100010cf: file jnitest.c, line 15. 
(gdb) 

步骤 5. 现在 GDB 在进程中设置了一个断点。此时需要使 JDB 让 JVM 继续运行。在 JDB 窗口中输入 cont 。(请注意这样看起来是 不返回的 ― 这是因为已经使用 GDB 停止了进程。)实际所发生的是 JDB 已经设置了 JVM,使它可以按正常工作时那样运行。

步骤 6. 在 GDB 窗口中输入 cont 来“释放”VM。注意已经到达这个断点。


清单 5. 释放 VM
(gdb) cont 
Continuing. 
[Switching to thread 1304.0x550] 
Breakpoint 1, Java_JNITest_native_1doubleInt (pEnv=0x2346c8, obj=0x6fe20, 
  value=42) at jnitest.c:15 
15       printf(" ***** Entering C code\n"); 
(gdb) 

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

Tags:调试 集成 Java

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