private void deleteEventRequest(EventRequestManager manager, MethodEntryRequest request) { manager.deleteEventRequest(request); }
private static MethodEntryRequest methodEntryRequests( EventRequestManager manager, String classpattern) { MethodEntryRequest mereq = manager.createMethodEntryRequest(); mereq.addClassFilter(classpattern); mereq.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD); return mereq; }
private void consumeRemainingEvents() { while( _eventIterator.hasNext() ) { Event event = _eventIterator.next(); if( event instanceof StepEvent ) { // a pending step event is superceded by a breakpoint or exception event getEventRequestManager().deleteEventRequest( event.request() ); } } // delete any pending step requests getEventRequestManager().deleteEventRequests( getEventRequestManager().stepRequests() ); }
List<BreakpointRequest> bpRequests = new ArrayList<>( erm.breakpointRequests() ); outer: for( Breakpoint bp : byLine.values() ) erm.deleteEventRequest( _classPrepareRequests.get( className ) ); erm.deleteEventRequest( _classPrepareRequests.get( className ) );
private void clearSteps() throws DebuggerException { List<StepRequest> snapshot = new ArrayList<>(getEventManager().stepRequests()); for (StepRequest stepRequest : snapshot) { if (stepRequest.thread().equals(getCurrentThread())) { getEventManager().deleteEventRequest(stepRequest); } } }
List<BreakpointRequest> bpRequests = new ArrayList<>( erm.breakpointRequests() ); for( BreakpointRequest req : bpRequests ) if( getOutermostType( location.declaringType() ).equals( bp.getFqn() ) && location.lineNumber() == bp.getLine() ) erm.deleteEventRequest( req ); List<ExceptionRequest> bpRequests = new ArrayList<>( erm.exceptionRequests() ); for( ExceptionRequest req : bpRequests ) if( bp.getFqn().equals( fqn ) ) erm.deleteEventRequest( req );
private void deferBreakpoint(String className, Breakpoint breakpoint) throws DebuggerException { List<Breakpoint> newList = new ArrayList<>(); List<Breakpoint> list = deferredBreakpoints.putIfAbsent(className, newList); if (list == null) { list = newList; } list.add(breakpoint); // start listening for the load of the type if (!classPrepareRequests.containsKey(className)) { ClassPrepareRequest request = getEventManager().createClassPrepareRequest(); // set class filter in order to reduce the amount of event traffic sent from the target VM to // the debugger VM request.addClassFilter(className); request.enable(); classPrepareRequests.put(className, request); } LOG.debug("Deferred breakpoint: {}", breakpoint.getLocation().toString()); }
private void installHaltPoint(VirtualMachine vm) { List<ReferenceType> targetClasses = vm .classesByName(VMLocalTarget.class.getName()); ReferenceType classRef = targetClasses.get(0); Method meth = classRef.methodsByName("haltPoint").get(0); BreakpointRequest req = vm.eventRequestManager() .createBreakpointRequest(meth.location()); req.setSuspendPolicy(BreakpointRequest.SUSPEND_EVENT_THREAD); req.enable(); }
BreakpointRequest req = erm.createBreakpointRequest( locations.get( 0 ) ); req.putProperty( TEMPORARY, bp.isTemporary() ); req.setEnabled( bp.isActive() && (bp.isActiveWhenMuted() || !_bpm.isMuted()) ); ExceptionRequest req = erm.createExceptionRequest( list.get( 0 ), bp.isCaughtException(), bp.isUncaughtException() ); req.setEnabled( bp.isActive() && (bp.isActiveWhenMuted() || !_bpm.isMuted()) );
@Override public void setExceptionBreakpoints(boolean notifyCaught, boolean notifyUncaught) { EventRequestManager manager = vm.eventRequestManager(); ArrayList<ExceptionRequest> legacy = new ArrayList<>(manager.exceptionRequests()); manager.deleteEventRequests(legacy); // When no exception breakpoints are requested, no need to create an empty exception request. if (notifyCaught || notifyUncaught) { // from: https://www.javatips.net/api/REPLmode-master/src/jm/mode/replmode/REPLRunner.java // Calling this seems to set something internally to make the // Eclipse JDI wake up. Without it, an ObjectCollectedException // is thrown on request.enable(). No idea why this works, // but at least exception handling has returned. (Suspect that it may // block until all or at least some threads are available, meaning // that the app has launched and we have legit objects to talk to). vm.allThreads(); // The bug may not have been noticed because the test suite waits for // a thread to be available, and queries it by calling allThreads(). // See org.eclipse.debug.jdi.tests.AbstractJDITest for the example. // get only the uncaught exceptions ExceptionRequest request = manager.createExceptionRequest(null, notifyCaught, notifyUncaught); request.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD); request.enable(); } }
for (BreakpointRequest breakpointRequest : requestManager.breakpointRequests()) { if (location.equals(breakpointRequest.location())) { LOG.debug("Breakpoint at {} already set", location); BreakpointRequest request = requestManager.createBreakpointRequest(location);
private StepRequest createStep( ThreadReference eventThread, int depth ) { if( getEventRequestManager().stepRequests().size() > 0 ) { // Only one at a time return null; } StepRequest req = getEventRequestManager().createStepRequest( eventThread, StepRequest.STEP_LINE, depth ); req.addClassExclusionFilter( "sun.*" ); req.addClassExclusionFilter( "com.sun.*" ); //req.addClassExclusionFilter( "java.*" ); // we support dependency source now for java runtime debugging now req.addClassExclusionFilter( "gw.*" ); req.addCountFilter( 1 ); req.putProperty( FROM_LOCATION, _location ); req.enable(); return req; }
List<BreakpointRequest> bpRequests = new ArrayList<>( erm.breakpointRequests() ); for( BreakpointRequest req : bpRequests ) List<ExceptionRequest> exceptionRequests = new ArrayList<>( erm.exceptionRequests() ); for( ExceptionRequest req: exceptionRequests )
public static void createExceptionBreakPoint(VirtualMachine vm) { EventRequestManager erm = vm.eventRequestManager(); List<ReferenceType> referenceTypes = vm.classesByName("java.lang.Throwable"); for (ReferenceType refType : referenceTypes){ ExceptionRequest exceptionRequest = erm.createExceptionRequest(refType, true, true); exceptionRequest.setEnabled(true); } }
private void disableEventRequest() { List<BreakpointRequest> breakpoint = threadRef.virtualMachine().eventRequestManager().breakpointRequests(); for (int j = 0; j < breakpoint.size(); j++) { BreakpointRequest breakpointRequest = breakpoint.get(j); breakpointRequest.setEnabled(false); } }
private static StepRequest createStepRequest(ThreadReference thread, int stepSize, int stepDepth, String[] stepFilters) { StepRequest request = thread.virtualMachine().eventRequestManager().createStepRequest(thread, stepSize, stepDepth); if (stepFilters != null) { for (String stepFilter : stepFilters) { request.addClassExclusionFilter(stepFilter); } } request.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD); request.addCountFilter(1); return request; }
@Override public void deleteBreakpoint(Location location) throws DebuggerException { final String target = location.getTarget(); final String className = !target.endsWith(".java") ? target : languageServer.identifyFqnInResource(location.getTarget(), location.getLineNumber()); final int lineNumber = location.getLineNumber(); EventRequestManager requestManager = getEventManager(); List<BreakpointRequest> snapshot = new ArrayList<>(requestManager.breakpointRequests()); for (BreakpointRequest breakpointRequest : snapshot) { com.sun.jdi.Location jdiLocation = breakpointRequest.location(); if (jdiLocation.declaringType().name().equals(className) && jdiLocation.lineNumber() == lineNumber) { requestManager.deleteEventRequest(breakpointRequest); LOG.debug("Delete breakpoint: {}", location); } } List<Breakpoint> defferedByClass = deferredBreakpoints.get(className); if (defferedByClass != null) { defferedByClass.removeIf( breakpoint -> { Location l = breakpoint.getLocation(); return l.getLineNumber() == location.getLineNumber() && l.getTarget().equals(location.getTarget()); }); } }
private void deferAddVmBreakpoint( Breakpoint bp ) { String className = bp.getDeclaringFqn_Java(); if( _classPrepareRequests.containsKey( className ) ) { return; } ClassPrepareRequest request = getEventRequestManager().createClassPrepareRequest(); request.addClassFilter( className ); request.enable(); _classPrepareRequests.put( className, request ); }
private void processClassPrepareEvent() throws AbsentInformationException { EventRequestManager erm = vm.eventRequestManager(); List<ReferenceType> referenceTypes = vm.classesByName(this.location.getContainingClassName()); List listOfLocations = referenceTypes.get(0).locationsOfLine(this.location.getLineNumber()); if (listOfLocations.size() == 0) { throw new RuntimeException("Buggy class not found " + this.location); } com.sun.jdi.Location jdiLocation = (com.sun.jdi.Location) listOfLocations.get(0); this.buggyMethod = jdiLocation.method().name(); breakpointSuspicious = erm.createBreakpointRequest(jdiLocation); breakpointSuspicious.setEnabled(true); initSpoon(); this.initExecutionTime = System.currentTimeMillis(); }
private void trapExceptions() { ReferenceType referenceType = vm.classesByName("java.lang.Throwable").get(0); vm.eventRequestManager().createExceptionRequest(referenceType, true, true).enable(); }