diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/requests/RequestManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/requests/RequestManagerImpl.java index d1fddc94e9b1..ad8c275337ee 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/requests/RequestManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/requests/RequestManagerImpl.java @@ -291,10 +291,7 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque public void callbackOnPrepareClasses(final ClassPrepareRequestor requestor, final SourcePosition classPosition) { DebuggerManagerThreadImpl.assertIsManagerThread(); - if (!myDebugProcess.getVirtualMachineProxy().canBeModified()) { - setInvalid(requestor, "Not available in read only mode"); - return; - } + if (checkReadOnly(requestor)) return; List prepareRequests = myDebugProcess.getPositionManager().createPrepareRequests(requestor, classPosition); if(prepareRequests.isEmpty()) { @@ -313,6 +310,9 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque @Override public void callbackOnPrepareClasses(ClassPrepareRequestor requestor, String classOrPatternToBeLoaded) { DebuggerManagerThreadImpl.assertIsManagerThread(); + + if (checkReadOnly(requestor)) return; + ClassPrepareRequest classPrepareRequest = createClassPrepareRequest(requestor, classOrPatternToBeLoaded); if (classPrepareRequest != null) { @@ -415,4 +415,12 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque public void clearWarnings() { myRequestWarnings.clear(); } + + public boolean checkReadOnly(Requestor requestor) { + if (!myDebugProcess.getVirtualMachineProxy().canBeModified()) { + setInvalid(requestor, "Not available in read only mode"); + return true; + } + return false; + } } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java index c4e93ae4c6bd..6e0ec6b0896f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/Breakpoint.java @@ -17,6 +17,7 @@ import com.intellij.debugger.engine.events.SuspendContextCommandImpl; import com.intellij.debugger.impl.DebuggerUtilsEx; import com.intellij.debugger.jdi.StackFrameProxyImpl; import com.intellij.debugger.jdi.ThreadReferenceProxyImpl; +import com.intellij.debugger.jdi.VirtualMachineProxyImpl; import com.intellij.debugger.requests.ClassPrepareRequestor; import com.intellij.debugger.requests.Requestor; import com.intellij.debugger.settings.DebuggerSettings; @@ -208,12 +209,17 @@ public abstract class Breakpoint

implements */ protected void createOrWaitPrepare(DebugProcessImpl debugProcess, String classToBeLoaded) { debugProcess.getRequestsManager().callbackOnPrepareClasses(this, classToBeLoaded); - processClassesPrepare(debugProcess, debugProcess.getVirtualMachineProxy().classesByName(classToBeLoaded).stream()); + VirtualMachineProxyImpl virtualMachineProxy = debugProcess.getVirtualMachineProxy(); + if (virtualMachineProxy.canBeModified()) { + processClassesPrepare(debugProcess, virtualMachineProxy.classesByName(classToBeLoaded).stream()); + } } protected void createOrWaitPrepare(final DebugProcessImpl debugProcess, @NotNull final SourcePosition classPosition) { debugProcess.getRequestsManager().callbackOnPrepareClasses(this, classPosition); - processClassesPrepare(debugProcess, debugProcess.getPositionManager().getAllClasses(classPosition).stream().distinct()); + if (debugProcess.getVirtualMachineProxy().canBeModified()) { + processClassesPrepare(debugProcess, debugProcess.getPositionManager().getAllClasses(classPosition).stream().distinct()); + } } private void processClassesPrepare(DebugProcessImpl debugProcess, Stream classes) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/ExceptionBreakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/ExceptionBreakpoint.java index c1ba1b780e02..8bd2a737c7ae 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/ExceptionBreakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/ExceptionBreakpoint.java @@ -125,7 +125,7 @@ public class ExceptionBreakpoint extends Breakpoint