在尝试连接到applet进行调试时,'shmemBase_attach失败:系统无法找到指定的文件'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在尝试连接到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会发生什么......可能会工作,也可能不会。
如果上述两种情况都很好,则需要进行更深入的调查以找出问题,但同时,您可以使用普通插座进行连接。
在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打破了你的破发点!
至少,我希望如此......
以上是关于在尝试连接到applet进行调试时,'shmemBase_attach失败:系统无法找到指定的文件'的主要内容,如果未能解决你的问题,请参考以下文章
将 Eclipse 连接到 Docker 容器以进行远程调试
Android Emulator 无法连接到 React-Native 远程调试器 - 连接时超时