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:
parent
0308b568ed
commit
160d1da864
2 changed files with 5 additions and 8 deletions
|
@ -1176,22 +1176,18 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo
|
||||||
|
|
||||||
@DsfServiceEventHandler
|
@DsfServiceEventHandler
|
||||||
public void eventDispatched(MIBreakpointHitEvent e) {
|
public void eventDispatched(MIBreakpointHitEvent e) {
|
||||||
performBreakpointAction(e.getNumber());
|
performBreakpointAction(e.getDMContext(), e.getNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
@DsfServiceEventHandler
|
@DsfServiceEventHandler
|
||||||
public void eventDispatched(MIWatchpointTriggerEvent e) {
|
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
|
// Identify the platform breakpoint
|
||||||
final ICBreakpoint breakpoint = findPlatformBreakpoint(number);
|
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...)
|
// Perform the actions asynchronously (otherwise we can have a deadlock...)
|
||||||
new Job("Breakpoint action") { //$NON-NLS-1$
|
new Job("Breakpoint action") { //$NON-NLS-1$
|
||||||
{ setSystem(true); }
|
{ setSystem(true); }
|
||||||
|
|
|
@ -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.DataRequestMonitor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
|
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.Query;
|
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.datamodel.IDMContext;
|
||||||
import org.eclipse.cdt.dsf.debug.service.IExpressions;
|
import org.eclipse.cdt.dsf.debug.service.IExpressions;
|
||||||
import org.eclipse.cdt.dsf.debug.service.IFormattedValues;
|
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) {
|
public MILogActionEnabler(DsfExecutor executor, DsfServicesTracker serviceTracker, IDMContext context) {
|
||||||
fExecutor = executor;
|
fExecutor = executor;
|
||||||
fServiceTracker = serviceTracker;
|
fServiceTracker = serviceTracker;
|
||||||
fContext = (IBreakpointsTargetDMContext) context;
|
fContext = DMContexts.getAncestorOfType(context, IBreakpointsTargetDMContext.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String evaluateExpression(final String expression) throws Exception {
|
public String evaluateExpression(final String expression) throws Exception {
|
||||||
|
|
Loading…
Add table
Reference in a new issue