在尝试连接到applet进行调试时,’shmemBase_attach失败:系统无法找到指定的文件’

我正在使用netbeans 6.1。

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

-agentlib:JDWP =运输= dt_shmem,地址= jdbconn,服务器= Y,暂停=正

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

调试器:JPDA调试器

连接器:共享内存连接(通过共享内存连接到其他VM)

运输:dt_shmem

名称:jdbconn

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

applet位于一个aspx页面(applet,whcih已签名,是一种通过客户端浏览器与传统平台进行通信的方法,我真的是C#开发人员)。 我已经设法显示安全警告,这使我有机会附加到applet,但每当我尝试连接时,我看到:

附加到jdbconn

shmemBase_attach失败:系统找不到指定的文件

在netbeans的输出窗口中。

任何帮助感激不尽!

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

这意味着,如果你是:

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

湾 不适用于Windows操作系统,

您无法在此模式下进行调试。

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

如果上述两种情况都很好,则需要进行更深入的调查以找出问题,但同时,您可以使用普通sockets进行连接。

在Java运行时参数中指定:

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

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

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

祝你好运!

我敢打赌你的applet运行的JVM安装与你系统上安装的默认JVM安装不同,几乎任何事情(几乎任何东西……或者至少几美元,或者一个cookie)。

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

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

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

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

4)打开浏览器并转到applet页面,然后重新启动applet。

5)现在回到任务管理器 – >进程选项卡,找到现在正在运行的java * .exe(它很可能是字面上的“java.exe * 32”,因为它在字面上会有一个asteriks进程的名称。如果你没有看到那个,那么只需使用正在运行的IS)。

6)右键单击该过程,然后在上下文菜单中选择“打开文件位置”。 这应该会带您到浏览器用来运行applet的已安装JVM的“bin”文件夹位置! 你是否感到惊讶它与你的想法不一样?

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

我在Windows上只遇到过这个问题,但无论如何你都是这样做的。

打开shell,然后键入以下内容

ps -e | grep java 

并记下pid(s)。

现在您已了解applet正在使用的JVM

我们需要为那个部分安装打开Java控制台(而不是我们之前尝试修改的默认安装)。

要打开applet正在使用的JVM安装的控制台,并设置运行时参数:

1)在JVM安装的bin文件夹中打开命令提示符(shell或其他)。 (在Windows 7中,您可以从资源管理器中移动+右键单击bin文件夹,然后选择“在此处打开命令提示符”)。

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

  javaws -viewer 

这也最终打开了我们不需要的“Java Cache Viewer”窗口。 关闭该窗口,但保持“Java控制面板”窗口打开。

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

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

4)单击“确定”,然后在主java控制台窗口中单击“应用”以应用并保存您所做的所有更改。

5)等待! 我建议你做最后一件事; 清除java WebStart缓存以确保您的applet使用新参数下载新鲜:

  javaws -uninstall 

确保在applet正在使用的JVM安装的bin目录中运行它,因为这可能与Path(或PATH)系统环境变量指向的bin目录不同。

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

至少,我希望如此……