首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >com.sun.jdi.VMDisconnectedException:从虚拟机获取IOException

com.sun.jdi.VMDisconnectedException:从虚拟机获取IOException
EN

Stack Overflow用户
提问于 2014-07-04 02:57:57
回答 1查看 3.4K关注 0票数 2

我在尝试摆脱这个异常时遇到了麻烦。我编写了一个程序,使用"com.sun.jdi.SocketAttach“作为附加连接器将调试器附加到远程服务器,一旦建立了连接,我就添加了一个调试目标。

代码语言:javascript
复制
vm = connector.attach(map)
debugTarget = JDIDebugModel.newDebugTarget(launch, remoteVM, name, null, false, true, true)
launch.addDebugTarget()

我的代码运行良好,但每次关闭eclipse工作区时都会出现此异常,该工作区具有到服务器的活动调试连接。看起来像这样:

代码语言:javascript
复制
!ENTRY org.eclipse.jdt.debug 4 125 2014-05-28 11:20:22.562
!MESSAGE Internal error logged from JDI Debug:
!STACK 0
com.sun.jdi.VMDisconnectedException: Got IOException from Virtual Machine
at org.eclipse.jdi.internal.connect.PacketSendManager.sendPacket(PacketSendManager.java:89)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:186)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:226)
at org.eclipse.jdi.internal.request.EventRequestImpl.disable(EventRequestImpl.java:217)
at org.eclipse.jdi.internal.request.EventRequestManagerImpl.deleteEventRequest(EventRequestManagerImpl.java:367)
at org.eclipse.jdt.internal.debug.core.breakpoints.JavaBreakpoint.removeRequests(JavaBreakpoint.java:769)
at org.eclipse.jdt.internal.debug.core.breakpoints.JavaBreakpoint.removeFromTarget(JavaBreakpoint.java:716)
at org.eclipse.jdt.internal.debug.core.breakpoints.JavaLineBreakpoint.removeFromTarget(JavaLineBreakpoint.java:187)
at org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget.removeAllBreakpoints(JDIDebugTarget.java:1566)
at org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget.cleanup(JDIDebugTarget.java:1522)
at org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget.shutdown(JDIDebugTarget.java:1658)
at org.eclipse.jdt.internal.debug.core.JDIDebugPlugin.stop(JDIDebugPlugin.java:345)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
at java.security.AccessController.doPrivileged(AccessController.java:330)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)

在调查这个问题时,我发现当客户端向VM发送请求时,即使在VM断开连接之后,也会抛出此异常。但在我的例子中,我没有在服务器上部署任何应用程序,也没有调试任何应用程序,但在关闭工作区之后,我仍然得到了这个异常。

我试图实现DebugEventListener,但不确定是否在正确的轨道上。如果你知道如何克服这个问题,请给我建议。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-10-22 04:28:59

我能够解决这个问题。在以编程方式关闭eclipse之前,我并没有终止调试目标。您可以使用以下代码来完成此操作:

代码语言:javascript
复制
    // debugTargets is the list of targets that can be updated when ever a new debug target is created.
    for (IDebugTarget target : debugTargets) {
          try {
                target.disconnect();
                target.terminate();
            } catch (DebugException e) {
                //handle the exception
            }
     }
     debugTargets.clear();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24561382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档