From f093653738b6f9650fcbec778916ccf9b14df0a2 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 8 May 2015 16:44:09 +0300 Subject: [PATCH] fixed forked tests debugging did not stop in the first sub-session --- .../intellij/debugger/engine/DebugProcessImpl.java | 1 + .../intellij/xdebugger/impl/XDebugSessionImpl.java | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java index 7c2a2df15a33..13ef8d37cd5c 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java @@ -1769,6 +1769,7 @@ public abstract class DebugProcessImpl extends UserDataHolderBase implements Deb ApplicationManager.getApplication().assertIsDispatchThread(); //TODO: remove this requirement ((XDebugSessionImpl)getXdebugProcess().getSession()).reset(); myState.set(STATE_INITIAL); + myRequestManager.processDetached(this, false); myConnection = environment.getRemoteConnection(); getManagerThread().restartIfNeeded(); createVirtualMachine(environment.getSessionName(), environment.isPollConnection()); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java index e83d1eb9f657..834f77d9e63e 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java @@ -302,10 +302,14 @@ public class XDebugSessionImpl implements XDebugSession { disableSlaveBreakpoints(dependentBreakpointManager); processAllBreakpoints(true, false); - myBreakpointListener = new MyBreakpointListener(); - breakpointManager.addBreakpointListener(myBreakpointListener); - myDependentBreakpointListener = new MyDependentBreakpointListener(); - dependentBreakpointManager.addListener(myDependentBreakpointListener); + if (myBreakpointListener == null) { + myBreakpointListener = new MyBreakpointListener(); + breakpointManager.addBreakpointListener(myBreakpointListener); + } + if (myDependentBreakpointListener == null) { + myDependentBreakpointListener = new MyDependentBreakpointListener(); + dependentBreakpointManager.addListener(myDependentBreakpointListener); + } } @Override