mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
(no message)
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
|
||||
package com.intellij.debugger.actions;
|
||||
|
||||
import com.intellij.debugger.DebuggerManager;
|
||||
import com.intellij.debugger.DebuggerManagerEx;
|
||||
import com.intellij.debugger.engine.SuspendContextImpl;
|
||||
import com.intellij.debugger.impl.DebuggerSession;
|
||||
import com.intellij.debugger.impl.DebuggerSession;
|
||||
import com.intellij.debugger.impl.DebuggerContextImpl;
|
||||
import com.intellij.debugger.impl.DebuggerSession;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DataConstants;
|
||||
@@ -31,8 +29,10 @@ public class StepOverAction extends AnAction {
|
||||
}
|
||||
final DebuggerContextImpl context = (DebuggerManagerEx.getInstanceEx(project)).getContext();
|
||||
DebuggerSession debuggerSession = context.getDebuggerSession();
|
||||
|
||||
final boolean isPaused = debuggerSession != null && debuggerSession.isPaused();
|
||||
final SuspendContextImpl suspendContext = context.getSuspendContext();
|
||||
|
||||
final boolean hasCurrentThread = suspendContext != null && suspendContext.getThread() != null;
|
||||
presentation.setEnabled(isPaused && hasCurrentThread);
|
||||
}
|
||||
|
||||
@@ -30,8 +30,12 @@ public class ContextUtil {
|
||||
|
||||
public static SourcePosition getSourcePosition(final StackFrameContext context) {
|
||||
DebugProcessImpl debugProcess = (DebugProcessImpl)context.getDebugProcess();
|
||||
if(debugProcess == null) return null;
|
||||
if(context.getFrameProxy() == null) return null;
|
||||
if(debugProcess == null) {
|
||||
return null;
|
||||
}
|
||||
if(context.getFrameProxy() == null) {
|
||||
return null;
|
||||
}
|
||||
Location location = null;
|
||||
try {
|
||||
location = context.getFrameProxy().location();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.intellij.debugger.engine;
|
||||
|
||||
import com.intellij.debugger.DebuggerManagerEx;
|
||||
import com.intellij.debugger.engine.events.DebuggerCommandImpl;
|
||||
import com.intellij.debugger.engine.events.SuspendContextCommandImpl;
|
||||
import com.intellij.debugger.engine.requests.LocatableEventRequestor;
|
||||
@@ -8,18 +9,13 @@ import com.intellij.debugger.jdi.VirtualMachineProxyImpl;
|
||||
import com.intellij.debugger.requests.Requestor;
|
||||
import com.intellij.debugger.ui.breakpoints.Breakpoint;
|
||||
import com.intellij.debugger.ui.breakpoints.LineBreakpoint;
|
||||
import com.intellij.debugger.DebuggerManagerEx;
|
||||
import com.intellij.debugger.DebuggerManagerEx;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.util.concurrency.Semaphore;
|
||||
import com.sun.jdi.*;
|
||||
import com.sun.jdi.event.*;
|
||||
import com.sun.jdi.request.EventRequest;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
* User: lex
|
||||
@@ -39,10 +35,8 @@ public class DebugProcessEvents extends DebugProcessImpl {
|
||||
super.commitVM(vm);
|
||||
if(vm != null) {
|
||||
vmAttached();
|
||||
|
||||
myEventThread = new DebuggerEventThread();
|
||||
myEventThread.start();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -177,13 +171,10 @@ public class DebugProcessEvents extends DebugProcessImpl {
|
||||
EventQueue eventQueue = myVmProxy.eventQueue();
|
||||
while (!isStopped()) {
|
||||
try {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Listening events");
|
||||
}
|
||||
final EventSet eventSet = eventQueue.remove();
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("EventSet " + eventSet.toString() + ", suspendPolicy=" + eventSet.suspendPolicy() + ";size=" + eventSet.size());
|
||||
LOG.debug("EVENTSET " + eventSet);
|
||||
}
|
||||
|
||||
DebugProcessEvents.this.getManagerThread().invokeAndWait(new DebuggerCommandImpl() {
|
||||
@@ -194,7 +185,7 @@ public class DebugProcessEvents extends DebugProcessImpl {
|
||||
final Event event = eventIterator.nextEvent();
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Event : " + event);
|
||||
LOG.debug("EVENT : " + event);
|
||||
}
|
||||
try {
|
||||
if (event instanceof VMStartEvent) {
|
||||
@@ -342,7 +333,9 @@ public class DebugProcessEvents extends DebugProcessImpl {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("STEPOUT doStep");
|
||||
}
|
||||
shouldResume = doStep(suspendContext.getThread(), hint.getDepth(), hint);
|
||||
final ThreadReferenceProxyImpl threadProxy = suspendContext.getThread();
|
||||
doStep(threadProxy, hint.getDepth(), hint);
|
||||
shouldResume = true;
|
||||
}
|
||||
|
||||
if(!shouldResume && hint.isRestoreBreakpoints()) {
|
||||
@@ -352,7 +345,8 @@ public class DebugProcessEvents extends DebugProcessImpl {
|
||||
|
||||
if(shouldResume) {
|
||||
getSuspendManager().voteResume(suspendContext);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
showStatusText("");
|
||||
getSuspendManager().voteSuspend(suspendContext);
|
||||
}
|
||||
|
||||
@@ -144,9 +144,15 @@ public abstract class DebugProcessImpl implements DebugProcess {
|
||||
if ("SENDS".compareToIgnoreCase(token) == 0) {
|
||||
mask |= VirtualMachine.TRACE_SENDS;
|
||||
}
|
||||
else if ("RAW_SENDS".compareToIgnoreCase(token) == 0) {
|
||||
mask |= 0x01000000;
|
||||
}
|
||||
else if ("RECEIVES".compareToIgnoreCase(token) == 0) {
|
||||
mask |= VirtualMachine.TRACE_RECEIVES;
|
||||
}
|
||||
else if ("RAW_RECEIVES".compareToIgnoreCase(token) == 0) {
|
||||
mask |= 0x02000000;
|
||||
}
|
||||
else if ("EVENTS".compareToIgnoreCase(token) == 0) {
|
||||
mask |= VirtualMachine.TRACE_EVENTS;
|
||||
}
|
||||
@@ -212,26 +218,26 @@ public abstract class DebugProcessImpl implements DebugProcess {
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
* @param stepThread
|
||||
* @param depth
|
||||
* @param hint may be null
|
||||
*/
|
||||
protected boolean doStep(ThreadReferenceProxyImpl stepThread, int depth, RequestHint hint) {
|
||||
final ThreadReferenceProxyImpl currentThreadProxy = stepThread;
|
||||
if (currentThreadProxy == null || !currentThreadProxy.isSuspended()) {
|
||||
protected void doStep(final ThreadReferenceProxyImpl stepThread, int depth, RequestHint hint) {
|
||||
/*
|
||||
if (stepThread == null || !stepThread.isSuspended()) {
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("DO_STEP: creating step request for " + currentThreadProxy.getThreadReference());
|
||||
LOG.debug("DO_STEP: creating step request for " + stepThread.getThreadReference());
|
||||
}
|
||||
deleteStepRequests(currentThreadProxy);
|
||||
deleteStepRequests(stepThread);
|
||||
EventRequestManager requestManager = getVirtualMachineProxy().eventRequestManager();
|
||||
StepRequest stepRequest = requestManager.createStepRequest(currentThreadProxy.getThreadReference(), StepRequest.STEP_LINE, depth);
|
||||
StepRequest stepRequest = requestManager.createStepRequest(stepThread.getThreadReference(), StepRequest.STEP_LINE, depth);
|
||||
DebuggerSettings settings = DebuggerSettings.getInstance();
|
||||
if (!(hint != null && hint.isIgnoreFilters()) && depth == StepRequest.STEP_INTO) {
|
||||
if (settings.TRACING_FILTERS_ENABLED) {
|
||||
String currentClassName = getCurrentClassName(currentThreadProxy);
|
||||
String currentClassName = getCurrentClassName(stepThread);
|
||||
if (currentClassName == null || !settings.isNameFiltered(currentClassName)) {
|
||||
// add class filters
|
||||
ClassFilter[] filters = settings.getFilters();
|
||||
@@ -250,7 +256,6 @@ public abstract class DebugProcessImpl implements DebugProcess {
|
||||
stepRequest.putProperty("hint", hint);
|
||||
}
|
||||
stepRequest.enable();
|
||||
return true;
|
||||
}
|
||||
|
||||
void deleteStepRequests(ThreadReferenceProxy requestsInThread) {
|
||||
@@ -334,7 +339,9 @@ public abstract class DebugProcessImpl implements DebugProcess {
|
||||
return connector.accept(myArguments);
|
||||
}
|
||||
finally {
|
||||
if(myArguments != null) connector.stopListening(myArguments);
|
||||
if(myArguments != null) {
|
||||
connector.stopListening(myArguments);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -1172,9 +1179,10 @@ public abstract class DebugProcessImpl implements DebugProcess {
|
||||
public void contextAction() {
|
||||
showStatusText("Stepping into");
|
||||
final SuspendContextImpl suspendContext = getSuspendContext();
|
||||
RequestHint hint = new RequestHint(suspendContext, StepRequest.STEP_INTO);
|
||||
final ThreadReferenceProxyImpl stepThread = suspendContext.getThread();
|
||||
RequestHint hint = new RequestHint(stepThread, suspendContext, StepRequest.STEP_INTO);
|
||||
hint.setIgnoreFilters(myIgnoreFilters);
|
||||
doStep(suspendContext.getThread(), StepRequest.STEP_INTO, hint);
|
||||
doStep(stepThread, StepRequest.STEP_INTO, hint);
|
||||
super.contextAction();
|
||||
}
|
||||
}
|
||||
@@ -1190,14 +1198,14 @@ public abstract class DebugProcessImpl implements DebugProcess {
|
||||
public void contextAction() {
|
||||
showStatusText("Stepping over");
|
||||
final SuspendContextImpl suspendContext = getSuspendContext();
|
||||
RequestHint hint = new RequestHint(suspendContext, StepRequest.STEP_OVER);
|
||||
final ThreadReferenceProxyImpl steppingThread = suspendContext.getThread();
|
||||
RequestHint hint = new RequestHint(steppingThread, suspendContext, StepRequest.STEP_OVER);
|
||||
hint.setRestoreBreakpoints(myIsIgnoreBreakpoints);
|
||||
|
||||
final boolean succeeded = doStep(suspendContext.getThread(), StepRequest.STEP_OVER, hint);
|
||||
if (succeeded) {
|
||||
if (myIsIgnoreBreakpoints) {
|
||||
DebuggerManagerEx.getInstanceEx(myProject).getBreakpointManager().disableBreakpoints(DebugProcessImpl.this);
|
||||
}
|
||||
doStep(steppingThread, StepRequest.STEP_OVER, hint);
|
||||
|
||||
if (myIsIgnoreBreakpoints) {
|
||||
DebuggerManagerEx.getInstanceEx(myProject).getBreakpointManager().disableBreakpoints(DebugProcessImpl.this);
|
||||
}
|
||||
super.contextAction();
|
||||
}
|
||||
@@ -1219,7 +1227,7 @@ public abstract class DebugProcessImpl implements DebugProcess {
|
||||
}
|
||||
myRunToCursorBreakpoint.SUSPEND_POLICY = DebuggerSettings.SUSPEND_ALL;
|
||||
myRunToCursorBreakpoint.LOG_ENABLED = false;
|
||||
getRequestsManager().createRequest(myRunToCursorBreakpoint);
|
||||
myRunToCursorBreakpoint.createRequest(getSuspendContext().getDebugProcess());
|
||||
DebugProcessImpl.this.myRunToCursorBreakpoint = myRunToCursorBreakpoint;
|
||||
super.contextAction();
|
||||
}
|
||||
@@ -1243,7 +1251,9 @@ public abstract class DebugProcessImpl implements DebugProcess {
|
||||
}
|
||||
|
||||
public void action() {
|
||||
if (!isAttached()) return;
|
||||
if (!isAttached()) {
|
||||
return;
|
||||
}
|
||||
logThreads();
|
||||
getVirtualMachineProxy().suspend();
|
||||
logThreads();
|
||||
|
||||
@@ -7,6 +7,7 @@ package com.intellij.debugger.engine;
|
||||
|
||||
import com.intellij.debugger.SourcePosition;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluateException;
|
||||
import com.intellij.debugger.engine.jdi.StackFrameProxy;
|
||||
import com.intellij.debugger.impl.PositionUtil;
|
||||
import com.intellij.debugger.jdi.ThreadReferenceProxyImpl;
|
||||
import com.intellij.debugger.jdi.VirtualMachineProxyImpl;
|
||||
@@ -33,18 +34,33 @@ class RequestHint {
|
||||
private boolean myRestoreBreakpoints = false;
|
||||
private boolean mySkipThisMethod = false;
|
||||
|
||||
public RequestHint(final SuspendContextImpl suspendContext, int depth) {
|
||||
public RequestHint(final ThreadReferenceProxyImpl stepThread, final SuspendContextImpl suspendContext, int depth) {
|
||||
final DebugProcessImpl debugProcess = suspendContext.getDebugProcess();
|
||||
myDepth = depth;
|
||||
myVirtualMachineProxy = debugProcess.getVirtualMachineProxy();
|
||||
|
||||
try {
|
||||
final ThreadReferenceProxyImpl thread = suspendContext.getThread();
|
||||
myFrameCount = thread.frameCount();
|
||||
myFrameCount = stepThread.frameCount();
|
||||
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
public void run() {
|
||||
myPosition = ContextUtil.getSourcePosition(suspendContext);
|
||||
myPosition = ContextUtil.getSourcePosition(new StackFrameContext() {
|
||||
public StackFrameProxy getFrameProxy() {
|
||||
try {
|
||||
return stepThread.frame(0);
|
||||
}
|
||||
catch (EvaluateException e) {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public DebugProcess getDebugProcess() {
|
||||
return suspendContext.getDebugProcess();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package com.intellij.debugger.engine;
|
||||
|
||||
import com.intellij.debugger.engine.events.SuspendContextCommandImpl;
|
||||
import com.intellij.Patches;
|
||||
import com.intellij.debugger.jdi.ThreadReferenceProxyImpl;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.Patches;
|
||||
import com.sun.jdi.InternalException;
|
||||
import com.sun.jdi.event.EventSet;
|
||||
import com.sun.jdi.request.EventRequest;
|
||||
import com.sun.jdi.InternalException;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -98,7 +97,8 @@ public class SuspendManagerImpl implements SuspendManager {
|
||||
LOG.debug("Start resuming eventSet " + set.toString() + " suspendPolicy = " + set.suspendPolicy() + ",size = " + set.size());
|
||||
}
|
||||
myDebugProcess.logThreads();
|
||||
LOG.assertTrue(getThread() != null ? getThread().isSuspended() : true);
|
||||
final ThreadReferenceProxyImpl thread = getThread();
|
||||
LOG.assertTrue(thread != null ? thread.isSuspended() : true);
|
||||
try {
|
||||
set.resume();
|
||||
}
|
||||
@@ -142,7 +142,6 @@ public class SuspendManagerImpl implements SuspendManager {
|
||||
myDebugProcess.clearCashes(suspendPolicy);
|
||||
}
|
||||
|
||||
|
||||
public void popFrame(SuspendContextImpl suspendContext) {
|
||||
popContext(suspendContext);
|
||||
SuspendContextImpl newSuspendContext = pushSuspendContext(suspendContext.getSuspendPolicy(), 0);
|
||||
@@ -160,9 +159,9 @@ public class SuspendManagerImpl implements SuspendManager {
|
||||
LOG.debug("popContext, suspends = " + suspends);
|
||||
}
|
||||
DebuggerManagerThreadImpl.assertIsManagerThread();
|
||||
boolean removed = myEventContexts.remove(suspendContext);
|
||||
if(LOG.isDebugEnabled()) {
|
||||
LOG.assertTrue(removed, suspendContext.toString());
|
||||
final boolean removed = myEventContexts.remove(suspendContext);
|
||||
if (!removed) {
|
||||
LOG.assertTrue(false, suspendContext.toString());
|
||||
}
|
||||
myPausedContexts.remove(suspendContext);
|
||||
}
|
||||
@@ -255,7 +254,8 @@ public class SuspendManagerImpl implements SuspendManager {
|
||||
if(suspendContext.myVotesToVote == 0) {
|
||||
if(suspendContext.myIsVotedForResume) {
|
||||
resume(suspendContext);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("vote paused");
|
||||
}
|
||||
|
||||
@@ -229,17 +229,15 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque
|
||||
return req;
|
||||
}
|
||||
|
||||
public void createRequest(Breakpoint breakpoint) {
|
||||
DebuggerManagerThreadImpl.assertIsManagerThread();
|
||||
if(!myDebugProcess.isAttached() || !findRequests(breakpoint).isEmpty()) return;
|
||||
breakpoint.createRequest(myDebugProcess);
|
||||
}
|
||||
|
||||
public void deleteRequest(Requestor requestor) {
|
||||
DebuggerManagerThreadImpl.assertIsManagerThread();
|
||||
if(!myDebugProcess.isAttached()) return;
|
||||
if(!myDebugProcess.isAttached()) {
|
||||
return;
|
||||
}
|
||||
Set<EventRequest> requests = myRequestorToBelongedRequests.get(requestor);
|
||||
if(requests == null) return;
|
||||
if(requests == null) {
|
||||
return;
|
||||
}
|
||||
myRequestorToBelongedRequests.remove(requestor);
|
||||
for (Iterator iterator = requests.iterator(); iterator.hasNext();) {
|
||||
EventRequest eventRequest = (EventRequest) iterator.next();
|
||||
@@ -335,7 +333,7 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque
|
||||
|
||||
for (Iterator<Breakpoint> iterator = breakpointManager.getBreakpoints().iterator(); iterator.hasNext();) {
|
||||
Breakpoint breakpoint = iterator.next();
|
||||
myDebugProcess.getRequestsManager().createRequest(breakpoint);
|
||||
breakpoint.createRequest(myDebugProcess);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -383,7 +381,7 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque
|
||||
public static void createRequests(final Breakpoint breakpoint) {
|
||||
invoke(breakpoint.getProject(), new AllProcessesCommand (){
|
||||
public void action(DebugProcessImpl process) {
|
||||
process.getRequestsManager().createRequest(breakpoint);
|
||||
breakpoint.createRequest(process);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -393,7 +391,7 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque
|
||||
public void action(DebugProcessImpl process) {
|
||||
process.getRequestsManager().myInvalidRequestors.remove(breakpoint);
|
||||
process.getRequestsManager().deleteRequest(breakpoint);
|
||||
process.getRequestsManager().createRequest(breakpoint);
|
||||
breakpoint.createRequest(process);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -380,9 +380,9 @@ public class DebuggerSession {
|
||||
}
|
||||
|
||||
/* Stepping */
|
||||
private void resumeAction(final SuspendContextCommandImpl action, int event) {
|
||||
private void resumeAction(final SuspendContextCommandImpl command, int event) {
|
||||
getContextManager().setState(SESSION_EMPTY_CONTEXT, STATE_WAIT_EVALUATION, event, null);
|
||||
myDebugProcess.getManagerThread().invokeLater(action, DebuggerManagerThreadImpl.HIGH_PRIORITY);
|
||||
myDebugProcess.getManagerThread().invokeLater(command, DebuggerManagerThreadImpl.HIGH_PRIORITY);
|
||||
}
|
||||
|
||||
public void stepOut() {
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.intellij.debugger.engine.DebugProcessImpl;
|
||||
import com.intellij.debugger.engine.events.DebuggerContextCommandImpl;
|
||||
import com.intellij.debugger.impl.*;
|
||||
import com.intellij.debugger.jdi.StackFrameProxyImpl;
|
||||
import com.intellij.debugger.jdi.ThreadReferenceProxyImpl;
|
||||
import com.intellij.debugger.settings.DebuggerColors;
|
||||
import com.intellij.debugger.ui.breakpoints.Breakpoint;
|
||||
import com.intellij.debugger.ui.breakpoints.BreakpointWithHighlighter;
|
||||
@@ -297,7 +298,8 @@ public class PositionHighlighter {
|
||||
|
||||
try {
|
||||
StackFrameProxyImpl frameProxy = myContext.getFrameProxy();
|
||||
isExecutionPoint = frameProxy.equals(getSuspendContext().getThread().frame(0));
|
||||
final ThreadReferenceProxyImpl thread = getSuspendContext().getThread();
|
||||
isExecutionPoint = (thread != null)? frameProxy.equals(thread.frame(0)) : false;
|
||||
} catch(Throwable th) {
|
||||
LOG.debug(th);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ package com.intellij.debugger.ui.breakpoints;
|
||||
|
||||
import com.intellij.debugger.engine.DebugProcessImpl;
|
||||
import com.intellij.debugger.engine.DebugProcess;
|
||||
import com.intellij.debugger.engine.DebuggerManagerThreadImpl;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.sun.jdi.ReferenceType;
|
||||
@@ -22,6 +23,7 @@ public class AnyExceptionBreakpoint extends ExceptionBreakpoint {
|
||||
}
|
||||
|
||||
public void createRequest(DebugProcessImpl debuggerProcess) {
|
||||
DebuggerManagerThreadImpl.assertIsManagerThread();
|
||||
if (!ENABLED || !debuggerProcess.isAttached() || !debuggerProcess.getRequestsManager().findRequests(this).isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -718,7 +718,7 @@ public class BreakpointManager implements JDOMExternalizable {
|
||||
List<Breakpoint> breakpoints = getBreakpoints();
|
||||
for (Iterator<Breakpoint> iterator = breakpoints.iterator(); iterator.hasNext();) {
|
||||
Breakpoint breakpoint = iterator.next();
|
||||
debugProcess.getRequestsManager().createRequest(breakpoint);
|
||||
breakpoint.createRequest(debugProcess);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.intellij.debugger.actions.ViewBreakpointsAction;
|
||||
import com.intellij.debugger.engine.DebugProcess;
|
||||
import com.intellij.debugger.engine.DebugProcessImpl;
|
||||
import com.intellij.debugger.engine.JVMNameUtil;
|
||||
import com.intellij.debugger.engine.DebuggerManagerThreadImpl;
|
||||
import com.intellij.debugger.engine.events.DebuggerCommandImpl;
|
||||
import com.intellij.debugger.engine.requests.RequestManagerImpl;
|
||||
import com.intellij.debugger.impl.DebuggerContextImpl;
|
||||
@@ -219,6 +220,7 @@ public abstract class BreakpointWithHighlighter extends Breakpoint {
|
||||
}
|
||||
|
||||
public void createRequest(DebugProcessImpl debugProcess) {
|
||||
DebuggerManagerThreadImpl.assertIsManagerThread();
|
||||
// check is this breakpoint is enabled, vm reference is valid and there're no requests created yet
|
||||
if (!ENABLED || !debugProcess.isAttached() || !debugProcess.getRequestsManager().findRequests(this).isEmpty()) {
|
||||
return;
|
||||
|
||||
@@ -4,12 +4,10 @@
|
||||
*/
|
||||
package com.intellij.debugger.ui.breakpoints;
|
||||
|
||||
import com.intellij.debugger.engine.DebugProcess;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluateException;
|
||||
import com.intellij.debugger.SourcePosition;
|
||||
import com.intellij.debugger.engine.DebugProcessImpl;
|
||||
import com.intellij.debugger.engine.SuspendContextImpl;
|
||||
import com.intellij.debugger.engine.DebugProcess;
|
||||
import com.intellij.debugger.engine.*;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
|
||||
import com.intellij.debugger.impl.DebuggerUtilsEx;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
@@ -79,6 +77,7 @@ public class ExceptionBreakpoint extends Breakpoint {
|
||||
}
|
||||
|
||||
public void createRequest(DebugProcessImpl debugProcess) {
|
||||
DebuggerManagerThreadImpl.assertIsManagerThread();
|
||||
if (!ENABLED || !debugProcess.isAttached() || !debugProcess.getRequestsManager().findRequests(this).isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ public abstract class FilteredRequestor implements LocatableEventRequestor, JDOM
|
||||
if(COUNT_FILTER_ENABLED) {
|
||||
context.getDebugProcess().getVirtualMachineProxy().suspend();
|
||||
context.getDebugProcess().getRequestsManager().deleteRequest(this);
|
||||
context.getDebugProcess().getRequestsManager().createRequest((Breakpoint)this);
|
||||
((Breakpoint)this).createRequest(context.getDebugProcess());
|
||||
context.getDebugProcess().getVirtualMachineProxy().resume();
|
||||
}
|
||||
if (INSTANCE_FILTERS_ENABLED) {
|
||||
|
||||
Reference in New Issue
Block a user