2

この例外を取り除こうとして問題が発生しています。「com.sun.jdi.SocketAttach」を接続コネクタとして使用してデバッガをリモートサーバーに接続するプログラムを作成し、接続が確立されたら、デバッグターゲットを追加しました。

vm = connector.attach(map)
debugTarget = JDIDebugModel.newDebugTarget(launch, remoteVM, name, null, false, true, true)
launch.addDebugTarget()

私のコードは正常に動作していますが、サーバーへのアクティブなデバッグ接続を持つ Eclipse ワークスペースを閉じるたびにこの例外が発生します。次のようになります。

!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 を実装しようとしましたが、正しい軌道に乗っているかどうかはわかりません。この問題を解決する方法をご存知の方、アドバイスをお願いいたします。

ありがとう

4

1 に答える 1

0

これで解決できました。プログラムでEclipseを閉じる前に、デバッグターゲットを終了していませんでした。次のコードを使用してそれを行うことができます。

    // 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();
于 2015-10-21T20:28:59.330 に答える