/** * Handles the "stop-in-main" and "use-step-filter" option. * * @param events the debug events. * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(DebugEvent[]) */ public void handleDebugEvents(DebugEvent[] events) { for (int i = 0; i < events.length; i++) { DebugEvent event = events[i]; if (event.getKind() == DebugEvent.CREATE && event.getSource() instanceof IJavaDebugTarget) { IJavaDebugTarget target = (IJavaDebugTarget) event.getSource(); ILaunch launch = target.getLaunch(); if (launch != null) { ILaunchConfiguration configuration = launch.getLaunchConfiguration(); if (configuration != null) { try { if (isStopInMain(configuration)) { String mainType = getMainTypeName(configuration); if (mainType != null) { Map map = new HashMap(); map.put( IJavaLaunchConfigurationConstants.ATTR_STOP_IN_MAIN, IJavaLaunchConfigurationConstants.ATTR_STOP_IN_MAIN); IJavaMethodBreakpoint bp = JDIDebugModel.createMethodBreakpoint( ResourcesPlugin.getWorkspace().getRoot(), mainType, "main", //$NON-NLS-1$ "([Ljava/lang/String;)V", //$NON-NLS-1$ true, false, false, -1, -1, -1, 1, false, map); //$NON-NLS-1$ bp.setPersisted(false); target.breakpointAdded(bp); } } if (isUseStepFilter(configuration)) { CjStepFilterOptionManager.getDefault().activateCaesarStepFilter(target); } DebugPlugin.getDefault().removeDebugEventListener(this); } catch (CoreException e) { LaunchingPlugin.log(e); } } } } } }