2

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

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

4

1 回答 1

1

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

java -d32 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=127.0.0.1:5463 -classpath . MainClass
jdb -attach 127.0.0.1:5463

第一个将为应用程序启动 JVM,但在创建后立即挂起它。第二个将启动调试器并将其附加到刚刚创建的 JVM。然后您可以run在第二个窗口中键入以启动应用程序。作为额外的好处,应用程序和调试器的输出不会混合在一起,因为它们都有自己的窗口。

参考:帮助jdb列出了可能的命令行参数,JPDA有一个关于传输的部分

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

于 2012-10-11T16:32:51.117 回答