以32位模式调试java应用程序
在OS X Lion上的命令行中使用OpenJDK 7,我如何使用以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
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,它将为你节省大量的时间,你会想知道为什么你不早点做