以32位模式调试java应用程序

以32位模式调试java应用程序,java,32bit-64bit,32-bit,openjdk,jdb,Java,32bit 64bit,32 Bit,Openjdk,Jdb,在OS X Lion上的命令行中使用OpenJDK 7,我如何使用jdb调试由于JNI本机代码而需要在32位JVM下执行的应用程序 我知道我可以调用java作为java-d32,它将使用32位JVM。我还可以将-d32标志传递给jdb,但它似乎没有任何效果:当应用程序尝试链接其本机代码时,我仍然会收到相同的错误消息。传递-J-d32表现出相同的行为。可以通过从两个不同的终端窗口启动java和jdb作为单独的进程来实现上述目的。因此,在各自的窗口中执行这些命令: java-d32-Xdebug-X

在OS X Lion上的命令行中使用OpenJDK 7,我如何使用
jdb
调试由于JNI本机代码而需要在32位JVM下执行的应用程序


我知道我可以调用
java
作为
java-d32
,它将使用32位JVM。我还可以将
-d32
标志传递给
jdb
,但它似乎没有任何效果:当应用程序尝试链接其本机代码时,我仍然会收到相同的错误消息。传递
-J-d32
表现出相同的行为。

可以通过从两个不同的终端窗口启动
java
jdb
作为单独的进程来实现上述目的。因此,在各自的窗口中执行这些命令:

java-d32-Xdebug-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=127.0.0.1:5463-classpath。主类
jdb-附件127.0.0.1:5463
第一个将启动应用程序的JVM,但在创建后立即挂起它。第二个将启动调试器并将其附加到刚刚创建的JVm。然后,您可以在第二个窗口中键入
run
,以启动应用程序。另外,应用程序和调试器的输出不会混合,因为它们都有自己的窗口

引用:列出了可能的命令行参数,并且有一个


尽管上述方法确实对我有用,但我还是欢迎提供更简单解决方案的其他答案,最好是作为单个命令和/或不需要以任意方式选择端口号。共享内存连接器似乎无法工作。

jdb不需要被告知其正在调试的进程的32/64位。我将使用IDE进行调试,因为它更简单。您只需按
Debug
按钮,而不是按
Run
按钮。@PeterLawrey,如果jdb启动了它正在调试的进程,那么就没有其他人可以告诉该进程它的位了。我是一个命令行的人,在这里考虑IDE是一个真正的替代品。在命令行中你能做的大部分事情就是IDE中的一次点击。一旦你习惯了IDE,它将为你节省大量的时间,你会想知道为什么你不早点做