Java 获得';shmemBase_attach失败:系统找不到指定的文件';尝试附加到小程序以进行调试时

Java 获得';shmemBase_attach失败:系统找不到指定的文件';尝试附加到小程序以进行调试时,java,debugging,applet,Java,Debugging,Applet,我正在使用netbeans 6.1 我的java运行时设置中有以下内容: -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n 以及netbeans中的“附加”对话框中的以下内容: 调试器:JPDA调试器 连接器:共享内存连接(通过共享内存连接到其他虚拟机) 传输:dt_shmem 名称:jdbconn 我从netbeans Wiki上的页面获得了上述设置 小程序位于aspx页面中(小程序,即签名的小程序,是一种

我正在使用netbeans 6.1

我的java运行时设置中有以下内容:

-agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n

以及netbeans中的“附加”对话框中的以下内容:

调试器:JPDA调试器

连接器:共享内存连接(通过共享内存连接到其他虚拟机)

传输:dt_shmem

名称:jdbconn

我从netbeans Wiki上的页面获得了上述设置

小程序位于aspx页面中(小程序,即签名的小程序,是一种通过客户端浏览器与传统平台进行通信的方法,我实际上是一名C#开发者)。我已成功显示安全警告,这使我有机会连接到小程序,但每当我尝试连接时,我都会看到:

连接到jdbconn

shmemBase\u附加失败:系统找不到指定的文件

在netbeans的输出窗口中


感谢您的帮助

使用共享内存选项(transport=dt_shmem)进行调试时,您正在使用Windows内部共享内存对象在调试器和jvm之间进行通信

这意味着,如果您:

a。不从与jvm相同的物理机器进行调试,或者

b。不在Windows操作系统上工作

无法在此模式下进行调试

我不确定如果你在Linux工作站上的VM上运行一个窗口会发生什么…可能会工作,也可能不会

如果以上两项都可以,则需要进行更深入的调查以找出问题所在,但同时,您可以使用普通套接字进行连接

在Java运行时参数中,指定:

-Xdebug-Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y

这会告诉jvm在调试模式下运行,加载jdwp库,等待连接连接到端口8000,并暂停执行,直到连接到达

在IDE中,相应地设置远程调试器。我不知道Netbeans,但它类似于Connector=socketconnector,address=8000。 当您启动网页时,小程序将冻结加载,直到您连接为止,当然,在到达侦听阶段之前,您无法连接

祝你好运

我敢打赌,运行小程序的JVM安装与系统上安装的默认JVM安装不同的任何东西(几乎任何东西……可能至少几美元,或者一个cookie)

要查找浏览器和小程序在Windows 7中使用的JVM安装

1) 关闭所有使用JVM的应用程序(尤其是浏览器)

2) 打开windows任务管理器(CTRL+ALT+DELETE->task manager),然后单击进程选项卡

3) 确保没有任何java*.exe进程正在运行

4) 打开浏览器,转到小程序页面,然后再次启动小程序

5) 现在回到任务管理器->进程选项卡,查找正在运行的java*.exe(很可能是“java.exe*32”,因为它在进程名称中会有一个星号。如果看不到该星号,则只需使用正在运行的星号即可)

6) 右键单击该进程,并在上下文菜单中选择“打开文件位置”。这会将您带到浏览器用于运行小程序的已安装JVM的“bin”文件夹位置!这和你想象的不一样,你感到惊讶吗

要在linux或其他系统上查找任务

我只在Windows上遇到过这个问题,但下面是如何解决的

打开一个shell,然后键入以下命令

ps -e | grep java
并记下pid

现在您知道小程序正在使用哪个JVM了

我们需要为partivular安装打开Java控制台(与我们之前尝试修改的默认安装相反)

要打开小程序正在使用的JVM安装控制台,并设置运行时参数,请执行以下操作:

    javaws -uninstall
1) 在JVM安装的bin文件夹中打开命令提示符(shell或任何东西)。(在windows 7中,您可以在资源管理器中按住shift键并右键单击bin文件夹,然后选择“在此处打开命令提示符”)

2) 运行以下命令以打开控制台:

    javaws -viewer
这也会打开“Java缓存查看器”窗口,这是我们不需要的。关闭该窗口,但保持“Java控制面板”窗口打开

3) 现在,您可以转到Java选项卡,单击view,并像以前一样修改运行时参数:

    -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n
4) 单击“确定”,然后在主java控制台窗口中单击“应用”,以应用并保存所做的所有更改

5) 等等!我建议你做最后一件事;清除java WebStart缓存,确保您的小程序使用新参数进行全新下载:

    javaws -uninstall
请确保并在小程序正在使用的JVM安装的bin目录中运行它,因为这可能不是Path(或Path)系统环境变量所指向的bin目录

现在从浏览器启动小程序,并在NetBeans IDE内创建另一个共享内存连接!在正在调试的正确源代码中设置断点(“NetBeans中的source”选项卡),然后开始使用小程序。您现在应该看到Netbeans正在突破您的突破点

至少,我希望如此