Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jdt-debug-dev] Possible Bug in Launching Java Applications (Eclipse 3.1)?

> 
> My plug-in uses JDT to launch programmatically Java applications. 
> The plug-in also adds breakpoints to the launched apps and registersa 
listener
> to receive the notifications when the breakpoint is hit. The plug-in
> was initially developed for Eclipse 3.0, but lately I have been 
> porting it to 3.1. I noticed 
> that when I add the breakpoints in 3.1, I don’t receive 
> breakpointHit- notifications from the Debug-plugin.  I started 
> debugging the plug-in and noticed that
> the launched application runs to completion before the breakpoints 
> are added, so the JDIDebugTarget.breakpointAdded doesn’t actually 
> add the breakpoint
> to the debug target. This is strange because the same code works in 
> 3.0. I launch the application using following code:
> 
> DebugPlugin debugPlugin = DebugPlugin.getDefault();
> debugPlugin.addDebugEventListener(new DebugEventHandler());
>  
> ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
> ILaunchConfigurationType type = manager.
> getLaunchConfigurationType(IJavaLaunchConfigurationConstants.
> ID_JAVA_APPLICATION);
> ILaunchConfigurationWorkingCopy wc = type.newInstance(null, 
"Profiling");
> wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROJECT_NAME,
> javaProject.getElementName());  
> wc.setAttribute(IJavaLaunchConfigurationConstants.
> ATTR_MAIN_TYPE_NAME, className);
> //wc.setAttribute(IJavaLaunchConfigurationConstants.
> ATTR_STOP_IN_MAIN,true);  
> ILaunchConfiguration config = wc.doSave();  
>  
> ILaunch launch = config.launch(ILaunchManager.DEBUG_MODE, null);
> 
> 
> and the breakpoint are added using following code:
> ProfileBreakpoint br = new ProfileBreakpoint(resource, typeName, 
> line, -1, -1, 0, 
> false, new HashMap(), UNKNOWN_MARKER);  
> debugTarget.breakpointAdded(br);
> 
> (Notice that ProfileBreakpoint is just a subclass from the 
JavaLineBreakpoint)

When do you create/add the breakpoints? If you create them after the 
launch, the target execution may complete before you add the breakpoints. 
I notice that you have commented out the line to "stop in main" which look 
suspicious.

Note that JavaLineBreakpoint is a private internal implementation class 
that is not intended to be subclassed by other plugins.

If you could provdide us with a reproduceable (small) example, it would be 
easier to diagnose the problem. 

Darin


Back to the top