1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-12 10:45:37 +02:00

Fix for Bug261258: ClassCastException on breakpoint action.

This commit is contained in:
Francois Chouinard 2009-01-15 20:10:09 +00:00
parent 0308b568ed
commit 160d1da864
2 changed files with 5 additions and 8 deletions

View file

@ -1176,22 +1176,18 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo
@DsfServiceEventHandler
public void eventDispatched(MIBreakpointHitEvent e) {
performBreakpointAction(e.getNumber());
performBreakpointAction(e.getDMContext(), e.getNumber());
}
@DsfServiceEventHandler
public void eventDispatched(MIWatchpointTriggerEvent e) {
performBreakpointAction(e.getNumber());
performBreakpointAction(e.getDMContext(), e.getNumber());
}
private void performBreakpointAction(int number) {
private void performBreakpointAction(final IDMContext context, int number) {
// Identify the platform breakpoint
final ICBreakpoint breakpoint = findPlatformBreakpoint(number);
// FIXME: (Bug228703) Temporary hack to have a context
Object[] contexts = fTargetBPs.keySet().toArray();
final IBreakpointsTargetDMContext context = (IBreakpointsTargetDMContext) contexts[0];
// Perform the actions asynchronously (otherwise we can have a deadlock...)
new Job("Breakpoint action") { //$NON-NLS-1$
{ setSystem(true); }

View file

@ -17,6 +17,7 @@ import org.eclipse.cdt.debug.core.breakpointactions.ILogActionEnabler;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
import org.eclipse.cdt.dsf.concurrent.Query;
import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.debug.service.IExpressions;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues;
@ -35,7 +36,7 @@ public class MILogActionEnabler implements ILogActionEnabler {
public MILogActionEnabler(DsfExecutor executor, DsfServicesTracker serviceTracker, IDMContext context) {
fExecutor = executor;
fServiceTracker = serviceTracker;
fContext = (IBreakpointsTargetDMContext) context;
fContext = DMContexts.getAncestorOfType(context, IBreakpointsTargetDMContext.class);
}
public String evaluateExpression(final String expression) throws Exception {