我正在使用netbeans 6.1。
我的java运行时设置中有以下内容:
-agentlib:JDWP =运输= dt_shmem,地址= jdbconn,服务器= Y,暂停= N
以及netbeans中附加对话框中的以下内容:
调试器:JPDA调试器
连接器:共享内存连接(通过共享内存连接到其他VM)
传输:dt_shmem
名称:jdbconn
我从netbeans Wiki上的FaqDebuggingAppletRemotely页面获得了上述设置。
applet位于aspx页面中(applet,签名,是一种通过客户端浏览器与传统平台进行通信的方法,我真的是C#开发人员)。我已设法显示安全警告,这使我有机会附加到applet,但每当我尝试连接时,我都会看到:
附加到jdbconn
shmemBase_attach失败:系统找不到指定的文件
在netbeans的输出窗口中。
感激不尽的任何帮助!
答案 0 :(得分:0)
使用共享内存选项(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。 当您启动网页时,小程序将冻结加载,直到您连接为止,当然,在达到收听阶段之前您无法连接。
祝你好运!答案 1 :(得分:-1)
我敢打赌你的小程序运行的JVM安装与你系统上安装的默认JVM安装不一样(几乎任何东西......至少几块钱,或者一个cookie)。< / p>
要查找您的浏览器和小程序在Windows 7中使用的JVM安装:
1)关闭所有使用JVM的应用程序(尤其是浏览器)。
2)打开Windows任务管理器(CTRL + ALT + DELETE-&gt;任务管理器),然后单击进程选项卡。
3)确保没有任何java * .exe进程在运行。
4)打开浏览器并转到applets页面,然后重新启动applet。
5)现在回到任务管理器 - &gt;进程选项卡,查找正在运行的java * .exe(很可能是“java.exe * 32”字面意思,因为它确实会有字面意思过程名称中的星号。如果你没有看到那个星号,那么只需使用IS运行的那个。)
6)右键单击该过程,然后在上下文菜单中选择“打开文件位置”。这应该会带您到浏览器用来运行applet的已安装JVM的“bin”文件夹位置!你觉得它和你想象的不一样,你感到惊讶吗?
在linux或其他系统上查找任务:
我在Windows上遇到过这个问题,但无论如何你都是这样做的。
打开shell,然后输入以下内容
ps -e | grep java
记下pid。
现在您知道您的小程序正在使用哪个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打破了你的破发点!
至少,我希望如此......