1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-19 15:05:36 +02:00

Bug 489683 - Change the breakpoint "number" from an int to a String

Change-Id: I33a8ca95f6894c360c95260433945cdf1b529bc3
This commit is contained in:
Marc Dumais 2016-03-15 10:00:12 -04:00 committed by Marc Khouzam
parent 1cb7faae95
commit c0109d378d
32 changed files with 337 additions and 311 deletions

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2010 Ericsson and others.
* Copyright (c) 2010 - 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -38,7 +38,7 @@ public class MITracepointSelectedEvent extends MIBreakpointHitEvent {
private int fRecNo;
protected MITracepointSelectedEvent(IExecutionDMContext ctx, int token, MIResult[] results, MIFrame frame, int trptno, int recordno) {
protected MITracepointSelectedEvent(IExecutionDMContext ctx, int token, MIResult[] results, MIFrame frame, String trptno, int recordno) {
super(ctx, token, results, frame, trptno);
fRecNo = recordno;
}
@ -53,7 +53,7 @@ public class MITracepointSelectedEvent extends MIBreakpointHitEvent {
@ConfinedToDsfExecutor("")
public static MITracepointSelectedEvent parse(IExecutionDMContext dmc, int token, MIResult[] results) {
int trptno = -1;
String trptno = ""; //$NON-NLS-1$
int recordno = -1;
for (int i = 0; i < results.length; i++) {
@ -66,7 +66,7 @@ public class MITracepointSelectedEvent extends MIBreakpointHitEvent {
if (var.equals("tracepoint")) { //$NON-NLS-1$
try {
trptno = Integer.parseInt(str.trim());
trptno = str.trim();
} catch (NumberFormatException e) {
}
} else if (var.equals("traceframe")) { //$NON-NLS-1$

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2010, 2014 Ericsson and others.
* Copyright (c) 2010, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -108,7 +108,7 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints
final DataRequestMonitor<IBreakpointDMContext> finalRm)
{
// Select the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
finalRm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
finalRm.done();
@ -150,8 +150,8 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints
// Create a breakpoint object and store it in the map
final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(getData().getMIBreakpoints()[0]);
int reference = newBreakpoint.getNumber();
if (reference == -1) {
String reference = newBreakpoint.getNumber();
if (reference.isEmpty()) {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, null));
rm.done();
return;
@ -191,7 +191,7 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints
protected void addTracepoint(final IBreakpointsTargetDMContext context, final Map<String, Object> attributes, final DataRequestMonitor<IBreakpointDMContext> drm)
{
// Select the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
drm.done();
@ -213,7 +213,7 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints
new DataRequestMonitor<CLITraceInfo>(getExecutor(), drm) {
@Override
protected void handleSuccess() {
final Integer tpReference = getData().getTraceReference();
final String tpReference = getData().getTraceReference();
if (tpReference == null) {
drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, null));
drm.done();
@ -229,11 +229,11 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints
protected void handleSuccess() {
MIBreakpoint[] breakpoints = getData().getMIBreakpoints();
for (MIBreakpoint bp : breakpoints) {
if (bp.getNumber() == tpReference) {
if (bp.getNumber().equals(tpReference)) {
// Create a breakpoint object and store it in the map
final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(bp);
int reference = newBreakpoint.getNumber();
String reference = newBreakpoint.getNumber();
contextBreakpoints.put(reference, newBreakpoint);
// Format the return value
@ -277,8 +277,8 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints
// At this point, we know their are OK so there is no need to re-validate
MIBreakpointDMContext breakpointCtx = (MIBreakpointDMContext) dmc;
IBreakpointsTargetDMContext context = DMContexts.getAncestorOfType(breakpointCtx, IBreakpointsTargetDMContext.class);
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final int reference = breakpointCtx.getReference();
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final String reference = breakpointCtx.getReference();
MIBreakpointDMData breakpoint = contextBreakpoints.get(reference);
// Track the number of change requests
@ -336,10 +336,10 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints
}
private void changeActions(final IBreakpointsTargetDMContext context,
final int reference, final String actionNames, final ITracepointAction[] actions, final RequestMonitor rm)
final String reference, final String actionNames, final ITracepointAction[] actions, final RequestMonitor rm)
{
// Pick the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
rm.done();
@ -376,10 +376,10 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints
*/
@Override
protected void changeIgnoreCount(IBreakpointsTargetDMContext context,
final int reference, final int ignoreCount, final RequestMonitor rm)
final String reference, final int ignoreCount, final RequestMonitor rm)
{
// Pick the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
rm.done();
@ -404,12 +404,14 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints
* @param reference
* @param ignoreCount
* @param rm
*
* @since 5.0
*/
protected void changePassCount(IBreakpointsTargetDMContext context,
final int reference, final int ignoreCount, final RequestMonitor rm)
final String reference, final int ignoreCount, final RequestMonitor rm)
{
// Pick the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
rm.done();

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2011, 2014 Ericsson and others.
* Copyright (c) 2011, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -119,7 +119,7 @@ public class GDBBreakpoints_7_2 extends GDBBreakpoints_7_0
// Select the breakpoints context map
// If it doesn't exist then no breakpoint was ever inserted for this breakpoint space.
// In that case, return an empty list.
final Map<Integer, MIBreakpointDMData> breakpointContext = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> breakpointContext = getBreakpointMap(context);
if (breakpointContext == null) {
drm.setData(new IBreakpointDMContext[0]);
drm.done();
@ -141,7 +141,7 @@ public class GDBBreakpoints_7_2 extends GDBBreakpoints_7_0
new ImmediateDataRequestMonitor<CLIInfoBreakInfo>(drm) {
@Override
protected void handleSuccess() {
Map<Integer, String[]> groupIdMap = getData().getBreakpointToGroupMap();
Map<String, String[]> groupIdMap = getData().getBreakpointToGroupMap();
// Refresh the breakpoints map and format the result
breakpointContext.clear();
@ -153,7 +153,7 @@ public class GDBBreakpoints_7_2 extends GDBBreakpoints_7_0
// It is ok to get null. For example, pending breakpoints are not
// associated to a thread-group; also, when debugging a single process,
// the thread-group list is empty.
int reference = breakpointData.getReference();
String reference = breakpointData.getReference();
String[] groupIds = groupIdMap.get(reference);
breakpointData.setGroupIds(groupIds);
@ -191,7 +191,7 @@ public class GDBBreakpoints_7_2 extends GDBBreakpoints_7_0
protected void sendTracepointCommand(final IBreakpointsTargetDMContext context, final Map<String, Object> attributes, boolean isFastTracepoint, final DataRequestMonitor<IBreakpointDMContext> drm) {
// Select the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
drm.done();
@ -223,8 +223,8 @@ public class GDBBreakpoints_7_2 extends GDBBreakpoints_7_0
// Create a breakpoint object and store it in the map
final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(getData().getMIBreakpoints()[0]);
int reference = newBreakpoint.getNumber();
if (reference == -1) {
String reference = newBreakpoint.getNumber();
if (reference.isEmpty()) {
drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, null));
drm.done();
return;

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2012, 2013 Mentor Graphics and others.
* Copyright (c) 2012, 2016 Mentor Graphics and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -118,8 +118,8 @@ public class GDBBreakpoints_7_4 extends GDBBreakpoints_7_2 implements IEventList
bs.targetBreakpointCreated(bpt);
}
else if (BREAKPOINT_DELETED.equals(asyncClass)) {
int id = getMIBreakpointIdFromOutput(notifyOutput);
if (id != 0)
String id = getMIBreakpointIdFromOutput(notifyOutput);
if (!id.isEmpty())
bs.targetBreakpointDeleted(id);
}
else if (BREAKPOINT_MODIFIED.equals(asyncClass)) {
@ -152,21 +152,21 @@ public class GDBBreakpoints_7_4 extends GDBBreakpoints_7_2 implements IEventList
return bpt;
}
private int getMIBreakpointIdFromOutput(MINotifyAsyncOutput notifyOutput) {
private String getMIBreakpointIdFromOutput(MINotifyAsyncOutput notifyOutput) {
MIResult[] results = notifyOutput.getMIResults();
for(int i = 0; i < results.length; i++) {
String var = results[i].getVariable();
MIValue val = results[i].getMIValue();
if (var.equals("id") && val instanceof MIConst) { //$NON-NLS-1$
try {
return Integer.parseInt(((MIConst)val).getCString().trim());
return ((MIConst)val).getCString().trim();
}
catch(NumberFormatException e) {
GdbPlugin.log(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, "Invalid breakpoint id")); //$NON-NLS-1$
}
}
}
return 0;
return ""; //$NON-NLS-1$
}
@Override
@ -284,7 +284,7 @@ public class GDBBreakpoints_7_4 extends GDBBreakpoints_7_2 implements IEventList
}
@Override
protected void deleteBreakpointFromTarget(IBreakpointsTargetDMContext context, int reference, RequestMonitor finalRm) {
protected void deleteBreakpointFromTarget(IBreakpointsTargetDMContext context, String reference, RequestMonitor finalRm) {
MIBreakpointsSynchronizer bs = getServicesTracker().getService(MIBreakpointsSynchronizer.class);
if (bs != null) {
// Do nothing if the breakpoint is deleted from the console.

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2014 Ericsson and others.
* Copyright (c) 2014 - 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -135,7 +135,7 @@ public class GDBBreakpoints_7_7 extends GDBBreakpoints_7_6 {
protected void doAddDynamicPrintf(final IBreakpointsTargetDMContext context, Map<String, Object> attributes, final DataRequestMonitor<IBreakpointDMContext> finalRm)
{
// Select the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
finalRm.done(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
return;
@ -174,8 +174,8 @@ public class GDBBreakpoints_7_7 extends GDBBreakpoints_7_6 {
// Create a breakpoint object and store it in the map
final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(getData().getMIBreakpoints()[0]);
int reference = newBreakpoint.getNumber();
if (reference == -1) {
String reference = newBreakpoint.getNumber();
if (reference.isEmpty()) {
rm.done(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, DYNAMIC_PRINTF_INSERTION_FAILURE, null));
return;
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2006, 2013 Wind River Systems and others.
* Copyright (c) 2006, 2016 Wind River Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -67,13 +67,13 @@ public class GDBRunControl extends MIRunControl {
private static class RunToLineActiveOperation {
private IMIExecutionDMContext fThreadContext;
private int fBpId;
private String fBpId;
private String fFileLocation;
private String fAddrLocation;
private boolean fSkipBreakpoints;
public RunToLineActiveOperation(IMIExecutionDMContext threadContext,
int bpId, String fileLoc, String addr, boolean skipBreakpoints) {
String bpId, String fileLoc, String addr, boolean skipBreakpoints) {
fThreadContext = threadContext;
fBpId = bpId;
fFileLocation = fileLoc;
@ -82,7 +82,7 @@ public class GDBRunControl extends MIRunControl {
}
public IMIExecutionDMContext getThreadContext() { return fThreadContext; }
public int getBreakointId() { return fBpId; }
public String getBreakointId() { return fBpId; }
public String getFileLocation() { return fFileLocation; }
public String getAddrLocation() { return fAddrLocation; }
public boolean shouldSkipBreakpoints() { return fSkipBreakpoints; }
@ -333,7 +333,7 @@ public class GDBRunControl extends MIRunControl {
public void handleSuccess() {
// We must set are RunToLineActiveOperation *before* we do the resume
// or else we may get the stopped event, before we have set this variable.
int bpId = getData().getMIBreakpoints()[0].getNumber();
String bpId = getData().getMIBreakpoints()[0].getNumber();
String addr = getData().getMIBreakpoints()[0].getAddress();
fRunToLineActiveOperation = new RunToLineActiveOperation(dmc, bpId, location, addr, skipBreakpoints);
@ -342,9 +342,9 @@ public class GDBRunControl extends MIRunControl {
public void handleFailure() {
IBreakpointsTargetDMContext bpDmc = DMContexts.getAncestorOfType(fRunToLineActiveOperation.getThreadContext(),
IBreakpointsTargetDMContext.class);
int bpId = fRunToLineActiveOperation.getBreakointId();
String bpId = fRunToLineActiveOperation.getBreakointId();
getConnection().queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new int[] {bpId}),
getConnection().queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new String[] {bpId}),
new DataRequestMonitor<MIInfo>(getExecutor(), null));
fRunToLineActiveOperation = null;
fStepInToSelectionActiveOperation = null;
@ -372,9 +372,9 @@ public class GDBRunControl extends MIRunControl {
if (fRunToLineActiveOperation != null) {
IBreakpointsTargetDMContext bpDmc = DMContexts.getAncestorOfType(fRunToLineActiveOperation.getThreadContext(),
IBreakpointsTargetDMContext.class);
int bpId = fRunToLineActiveOperation.getBreakointId();
String bpId = fRunToLineActiveOperation.getBreakointId();
getConnection().queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new int[] {bpId}),
getConnection().queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new String[] {bpId}),
new DataRequestMonitor<MIInfo>(getExecutor(), null));
fRunToLineActiveOperation = null;
fStepInToSelectionActiveOperation = null;
@ -436,7 +436,7 @@ public class GDBRunControl extends MIRunControl {
private boolean processRunToLineStoppedEvent(final MIStoppedEvent e) {
if (fRunToLineActiveOperation != null) {
int bpId = 0;
String bpId = ""; //$NON-NLS-1$
if (e instanceof MIBreakpointHitEvent) {
bpId = ((MIBreakpointHitEvent)e).getNumber();
}
@ -454,7 +454,7 @@ public class GDBRunControl extends MIRunControl {
// has multiple addresses for the breakpoint. I'm mean, come on!
boolean equalFileLocation = false;
boolean equalAddrLocation = false;
boolean equalBpId = bpId == fRunToLineActiveOperation.getBreakointId();
boolean equalBpId = bpId.equals(fRunToLineActiveOperation.getBreakointId());
MIFrame frame = e.getFrame();
if(frame != null) {
String fileLocation = frame.getFile() + ":" + frame.getLine(); //$NON-NLS-1$
@ -487,7 +487,7 @@ public class GDBRunControl extends MIRunControl {
IBreakpointsTargetDMContext bpDmc = DMContexts.getAncestorOfType(fRunToLineActiveOperation.getThreadContext(),
IBreakpointsTargetDMContext.class);
getConnection().queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new int[] {fRunToLineActiveOperation.getBreakointId()}),
getConnection().queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new String[] {fRunToLineActiveOperation.getBreakointId()}),
new DataRequestMonitor<MIInfo>(getExecutor(), null));
fRunToLineActiveOperation = null;
fStepInToSelectionActiveOperation = null;

View file

@ -331,13 +331,14 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService implements IMIRunCo
*/
protected static class RunToLineActiveOperation {
private IMIExecutionDMContext fThreadContext;
private int fBpId;
private String fBpId;
private String fFileLocation;
private String fAddrLocation;
private boolean fSkipBreakpoints;
/** @since 5.0 */
public RunToLineActiveOperation(IMIExecutionDMContext threadContext,
int bpId, String fileLoc, String addr, boolean skipBreakpoints) {
String bpId, String fileLoc, String addr, boolean skipBreakpoints) {
fThreadContext = threadContext;
fBpId = bpId;
fFileLocation = fileLoc;
@ -346,7 +347,8 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService implements IMIRunCo
}
public IMIExecutionDMContext getThreadContext() { return fThreadContext; }
public int getBreakointId() { return fBpId; }
/** @since 5.0 */
public String getBreakointId() { return fBpId; }
public String getFileLocation() { return fFileLocation; }
public String getAddrLocation() { return fAddrLocation; }
public boolean shouldSkipBreakpoints() { return fSkipBreakpoints; }
@ -960,7 +962,7 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService implements IMIRunCo
public void handleSuccess() {
// We must set are RunToLineActiveOperation *before* we do the resume
// or else we may get the stopped event, before we have set this variable.
int bpId = getData().getMIBreakpoints()[0].getNumber();
String bpId = getData().getMIBreakpoints()[0].getNumber();
String addr = getData().getMIBreakpoints()[0].getAddress();
fRunToLineActiveOperation = new RunToLineActiveOperation(dmc, bpId, location, addr, skipBreakpoints);
@ -969,9 +971,9 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService implements IMIRunCo
public void handleFailure() {
IBreakpointsTargetDMContext bpDmc = DMContexts.getAncestorOfType(fRunToLineActiveOperation.getThreadContext(),
IBreakpointsTargetDMContext.class);
int bpId = fRunToLineActiveOperation.getBreakointId();
String bpId = fRunToLineActiveOperation.getBreakointId();
fConnection.queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new int[] {bpId}),
fConnection.queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new String[] {bpId}),
new DataRequestMonitor<MIInfo>(getExecutor(), null));
fRunToLineActiveOperation = null;
fStepInToSelectionActiveOperation = null;
@ -1715,9 +1717,9 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService implements IMIRunCo
IDMEvent<?> event = null;
MIBreakpointDMContext bp = null;
if (e instanceof MIBreakpointHitEvent) {
int bpId = ((MIBreakpointHitEvent) e).getNumber();
String bpId = ((MIBreakpointHitEvent) e).getNumber();
IBreakpointsTargetDMContext bpsTarget = DMContexts.getAncestorOfType(e.getDMContext(), IBreakpointsTargetDMContext.class);
if (bpsTarget != null && bpId >= 0) {
if (bpsTarget != null && !bpId.isEmpty()) {
bp = new MIBreakpointDMContext(getSession().getId(), new IDMContext[] { bpsTarget }, bpId);
event = new BreakpointHitEvent(e.getDMContext(), (MIBreakpointHitEvent) e, bp);
}
@ -1857,7 +1859,7 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService implements IMIRunCo
// First check if it is the right thread that stopped
IMIExecutionDMContext threadDmc = DMContexts.getAncestorOfType(e.getDMContext(), IMIExecutionDMContext.class);
if (fRunToLineActiveOperation.getThreadContext().equals(threadDmc)) {
int bpId = 0;
String bpId = ""; //$NON-NLS-1$
if (e instanceof MIBreakpointHitEvent) {
bpId = ((MIBreakpointHitEvent) e).getNumber();
}
@ -1877,7 +1879,7 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService implements IMIRunCo
// does a runToLine to a line that is non-executable AND has another breakpoint AND
// has multiple addresses for the breakpoint. I'm mean, come on!
if (fileLocation.equals(fRunToLineActiveOperation.getFileLocation()) || addrLocation.equals(fRunToLineActiveOperation.getAddrLocation())
|| bpId == fRunToLineActiveOperation.getBreakointId()) {
|| bpId.equals(fRunToLineActiveOperation.getBreakointId())) {
// We stopped at the right place. All is well.
// Run to line completed
fRunToLineActiveOperation = null;
@ -1898,7 +1900,7 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService implements IMIRunCo
// be for another thread altogether and should not affect the current thread.
IBreakpointsTargetDMContext bpDmc = DMContexts.getAncestorOfType(fRunToLineActiveOperation.getThreadContext(), IBreakpointsTargetDMContext.class);
fConnection.queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new int[] { fRunToLineActiveOperation.getBreakointId() }), new DataRequestMonitor<MIInfo>(getExecutor(), null));
fConnection.queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new String[] { fRunToLineActiveOperation.getBreakointId() }), new DataRequestMonitor<MIInfo>(getExecutor(), null));
fRunToLineActiveOperation = null;
fStepInToSelectionActiveOperation = null;
}
@ -2004,9 +2006,9 @@ public class GDBRunControl_7_0_NS extends AbstractDsfService implements IMIRunCo
if (fRunToLineActiveOperation != null) {
IBreakpointsTargetDMContext bpDmc = DMContexts.getAncestorOfType(fRunToLineActiveOperation.getThreadContext(),
IBreakpointsTargetDMContext.class);
int bpId = fRunToLineActiveOperation.getBreakointId();
String bpId = fRunToLineActiveOperation.getBreakointId();
fConnection.queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new int[] {bpId}),
fConnection.queueCommand(fCommandFactory.createMIBreakDelete(bpDmc, new String[] {bpId}),
new DataRequestMonitor<MIInfo>(getExecutor(), null));
fRunToLineActiveOperation = null;
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2007, 2014 Ericsson and others.
* Copyright (c) 2007, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -252,7 +252,8 @@ public class MIBreakpointDMData implements IBreakpointDMData {
return (String) fProperties.get(MIBreakpoints.BREAKPOINT_TYPE);
}
public int getReference() {
/** @since 5.0 */
public String getReference() {
return fBreakpoint.getNumber();
}
@ -323,7 +324,8 @@ public class MIBreakpointDMData implements IBreakpointDMData {
return fBreakpoint.getCommands();
}
public int getNumber() {
/** @since 5.0 */
public String getNumber() {
return fBreakpoint.getNumber();
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2007, 2015 Ericsson and others.
* Copyright (c) 2007, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -130,7 +130,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
// Service breakpoints tracking
// The breakpoints are stored per context and keyed on the back-end breakpoint reference
private Map<IBreakpointsTargetDMContext, Map<Integer, MIBreakpointDMData>> fBreakpoints = new HashMap<>();
private Map<IBreakpointsTargetDMContext, Map<String, MIBreakpointDMData>> fBreakpoints = new HashMap<>();
/**
* Map tracking which threads are currently suspended on a breakpoint.
@ -143,7 +143,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
*
* @since 3.0
*/
protected Map<Integer, MIBreakpointDMData> getBreakpointMap(IBreakpointsTargetDMContext ctx) {
protected Map<String, MIBreakpointDMData> getBreakpointMap(IBreakpointsTargetDMContext ctx) {
return fBreakpoints.get(ctx);
}
@ -154,8 +154,8 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
*
* @since 3.0
*/
protected Map<Integer, MIBreakpointDMData> createNewBreakpointMap(IBreakpointsTargetDMContext ctx) {
Map<Integer, MIBreakpointDMData> map = new HashMap<>();
protected Map<String, MIBreakpointDMData> createNewBreakpointMap(IBreakpointsTargetDMContext ctx) {
Map<String, MIBreakpointDMData> map = new HashMap<>();
fBreakpoints.put(ctx, map);
return map;
}
@ -231,14 +231,16 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
public static final class MIBreakpointDMContext extends AbstractDMContext implements IBreakpointDMContext {
// The breakpoint reference
private final Integer fReference;
private final String fReference;
/**
* @param service the Breakpoint service
* @param parents the parent contexts
* @param reference the DsfMIBreakpoint reference
*
* @since 5.0
*/
public MIBreakpointDMContext(MIBreakpoints service, IDMContext[] parents, int reference) {
public MIBreakpointDMContext(MIBreakpoints service, IDMContext[] parents, String reference) {
this(service.getSession().getId(), parents, reference);
}
@ -247,17 +249,19 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
* @param parents the parent contexts
* @param reference the DsfMIBreakpoint reference
*
* @since 3.0
* @since 5.0
*/
public MIBreakpointDMContext(String sessionId, IDMContext[] parents, int reference) {
public MIBreakpointDMContext(String sessionId, IDMContext[] parents, String reference) {
super(sessionId, parents);
fReference = reference;
}
/* (non-Javadoc)
/**
* @returns a reference to the breakpoint
* @see org.eclipse.cdt.dsf.debug.service.IBreakpoints.IDsfBreakpointDMContext#getReference()
*/
public int getReference() {
* @since 5.0
*/
public String getReference() {
return fReference;
}
@ -370,7 +374,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
// remove it from our breakpoints map.
IBreakpointsTargetDMContext bpContext = DMContexts.getAncestorOfType(e.getDMContext(), IBreakpointsTargetDMContext.class);
if (bpContext != null) {
Map<Integer, MIBreakpointDMData> contextBps = getBreakpointMap(bpContext);
Map<String, MIBreakpointDMData> contextBps = getBreakpointMap(bpContext);
if (contextBps != null) {
contextBps.remove(e.getNumber());
}
@ -410,7 +414,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
// Select the breakpoints context map
// If it doesn't exist then no breakpoint was ever inserted for this breakpoint space.
// In that case, return an empty list.
final Map<Integer, MIBreakpointDMData> breakpointContext = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> breakpointContext = getBreakpointMap(context);
if (breakpointContext == null) {
drm.setData(new IBreakpointDMContext[0]);
drm.done();
@ -428,7 +432,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
IBreakpointDMContext[] result = new IBreakpointDMContext[breakpoints.length];
for (int i = 0; i < breakpoints.length; i++) {
MIBreakpointDMData breakpoint = new MIBreakpointDMData(breakpoints[i]);
int reference = breakpoint.getReference();
String reference = breakpoint.getReference();
result[i] = new MIBreakpointDMContext(MIBreakpoints.this, new IDMContext[] { context }, reference);
breakpointContext.put(reference, breakpoint);
}
@ -475,7 +479,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
}
// Select the breakpoints context map
Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT, null));
drm.done();
@ -506,7 +510,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
}
// Select the breakpoints context map. If it doesn't exist, create it.
Map<Integer, MIBreakpointDMData> breakpointContext = getBreakpointMap(context);
Map<String, MIBreakpointDMData> breakpointContext = getBreakpointMap(context);
if (breakpointContext == null) {
breakpointContext = createNewBreakpointMap(context);
}
@ -637,7 +641,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
protected void addBreakpoint(final IBreakpointsTargetDMContext context, final Map<String, Object> attributes, final DataRequestMonitor<IBreakpointDMContext> finalRm)
{
// Select the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
finalRm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
finalRm.done();
@ -677,8 +681,8 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
// Create a breakpoint object and store it in the map
final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(getData().getMIBreakpoints()[0]);
int reference = newBreakpoint.getNumber();
if (reference == -1) {
String reference = newBreakpoint.getNumber();
if (reference.isEmpty()) {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, null));
rm.done();
return;
@ -738,7 +742,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
protected void addWatchpoint(final IBreakpointsTargetDMContext context, final Map<String, Object> attributes, final DataRequestMonitor<IBreakpointDMContext> drm)
{
// Pick the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
drm.done();
@ -770,8 +774,8 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
// Create a breakpoint object and store it in the map
final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(getData().getMIBreakpoints()[0]);
int reference = newBreakpoint.getNumber();
if (reference == -1) {
String reference = newBreakpoint.getNumber();
if (reference.isEmpty()) {
drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, WATCHPOINT_INSERTION_FAILURE, null));
drm.done();
return;
@ -810,7 +814,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
*/
protected void addCatchpoint(final IBreakpointsTargetDMContext context, final Map<String, Object> attributes, final DataRequestMonitor<IBreakpointDMContext> finalRm) {
// Select the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
finalRm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
finalRm.done();
@ -845,8 +849,8 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
// Create a breakpoint object and store it in the map
final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(miBkpt);
int reference = newBreakpoint.getNumber();
if (reference == -1) {
String reference = newBreakpoint.getNumber();
if (reference.isEmpty()) {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, CATCHPOINT_INSERTION_FAILURE, null));
rm.done();
return;
@ -929,7 +933,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
}
// Pick the context breakpoints map
final Map<Integer,MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String,MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
finalRm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT, null));
finalRm.done();
@ -937,7 +941,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
}
// Validate the breakpoint
final int reference = breakpointCtx.getReference();
final String reference = breakpointCtx.getReference();
MIBreakpointDMData breakpoint = contextBreakpoints.get(reference);
if (breakpoint == null) {
finalRm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT, null));
@ -994,7 +998,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
}
// Pick the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT, null));
rm.done();
@ -1002,7 +1006,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
}
// Validate the breakpoint
final int reference = breakpointCtx.getReference();
final String reference = breakpointCtx.getReference();
MIBreakpointDMData breakpoint = contextBreakpoints.get(reference);
if (breakpoint == null) {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT, null));
@ -1030,8 +1034,8 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
// At this point, we know their are OK so there is no need to re-validate
MIBreakpointDMContext breakpointCtx = (MIBreakpointDMContext) dmc;
IBreakpointsTargetDMContext context = DMContexts.getAncestorOfType(dmc, IBreakpointsTargetDMContext.class);
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final int reference = breakpointCtx.getReference();
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final String reference = breakpointCtx.getReference();
MIBreakpointDMData breakpoint = contextBreakpoints.get(reference);
// Track the number of change requests
@ -1107,13 +1111,13 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
* @param condition
* @param finalRm
*
* @since 3.0
* @since 5.0
*/
protected void changeCondition(final IBreakpointsTargetDMContext context,
final int reference, final String condition, final RequestMonitor finalRm)
final String reference, final String condition, final RequestMonitor finalRm)
{
// Pick the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
finalRm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
finalRm.done();
@ -1181,13 +1185,13 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
* @param ignoreCount
* @param finalRm
*
* @since 3.0
* @since 5.0
*/
protected void changeIgnoreCount(final IBreakpointsTargetDMContext context,
final int reference, final int ignoreCount, final RequestMonitor finalRm)
final String reference, final int ignoreCount, final RequestMonitor finalRm)
{
// Pick the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
finalRm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
finalRm.done();
@ -1226,13 +1230,13 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
* @param reference
* @param finalRm
*
* @since 3.0
* @since 5.0
*/
protected void enableBreakpoint(final IBreakpointsTargetDMContext context,
final int reference, final RequestMonitor finalRm)
final String reference, final RequestMonitor finalRm)
{
// Pick the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
finalRm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
finalRm.done();
@ -1244,7 +1248,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
public void execute(final RequestMonitor rm) {
// Queue the command
fConnection.queueCommand(
fCommandFactory.createMIBreakEnable(context, new int[] { reference }),
fCommandFactory.createMIBreakEnable(context, new String[] { reference }),
new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@Override
protected void handleSuccess() {
@ -1271,13 +1275,13 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
* @param dmc
* @param finalRm
*
* @since 3.0
* @since 5.0
*/
protected void disableBreakpoint(final IBreakpointsTargetDMContext context,
final int reference, final RequestMonitor finalRm)
final String reference, final RequestMonitor finalRm)
{
// Pick the context breakpoints map
final Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
final Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointMap(context);
if (contextBreakpoints == null) {
finalRm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, UNKNOWN_BREAKPOINT_CONTEXT, null));
finalRm.done();
@ -1289,7 +1293,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
public void execute(final RequestMonitor rm) {
// Queue the command
fConnection.queueCommand(
fCommandFactory.createMIBreakDisable(context, new int[] { reference }),
fCommandFactory.createMIBreakDisable(context, new String[] { reference }),
new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@Override
protected void handleSuccess() {
@ -1311,15 +1315,15 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
/**
* This method deletes the target breakpoint with the given reference number.
* @since 4.2
* @since 5.0
*/
protected void deleteBreakpointFromTarget(final IBreakpointsTargetDMContext context, final int reference, RequestMonitor finalRm) {
protected void deleteBreakpointFromTarget(final IBreakpointsTargetDMContext context, final String reference, RequestMonitor finalRm) {
final Step deleteBreakpointStep = new Step() {
@Override
public void execute(final RequestMonitor rm) {
// Queue the command
fConnection.queueCommand(
fCommandFactory.createMIBreakDelete(context, new int[] { reference }),
fCommandFactory.createMIBreakDelete(context, new String[] { reference }),
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
}
};
@ -1385,12 +1389,12 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I
/**
* Returns a breakpoint target context for given breakpoint number.
* @since 4.2
* @since 5.0
*/
protected IBreakpointsTargetDMContext getBreakpointTargetContext(int reference) {
protected IBreakpointsTargetDMContext getBreakpointTargetContext(String reference) {
for (IBreakpointsTargetDMContext context : fBreakpoints.keySet()) {
Map<Integer, MIBreakpointDMData> map = fBreakpoints.get(context);
if (map != null && map.keySet().contains(Integer.valueOf(reference))) {
Map<String, MIBreakpointDMData> map = fBreakpoints.get(context);
if (map != null && map.keySet().contains(reference)) {
return context;
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2007, 2015 Wind River and others.
* Copyright (c) 2007, 2016 Wind River and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -1475,7 +1475,7 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo
public void eventDispatched(SuspendedEvent e) {
}
private void performBreakpointAction(final IDMContext context, int number) {
private void performBreakpointAction(final IDMContext context, String number) {
// Identify the platform breakpoint
final ICBreakpoint breakpoint = findPlatformBreakpoint(number);
@ -1496,7 +1496,7 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo
// to the target breakpoint/watchpoint that was just hit
// FIXME: (Bug228703) Need a way to identify the correct context where the BP was hit
private ICBreakpoint findPlatformBreakpoint(int targetBreakpointID) {
private ICBreakpoint findPlatformBreakpoint(String targetBreakpointID) {
Set<IBreakpointsTargetDMContext> targets = fBPToPlatformMaps.keySet();
for (IBreakpointsTargetDMContext target : targets) {
Map<IBreakpointDMContext, ICBreakpoint> bps = fBPToPlatformMaps.get(target);
@ -1504,7 +1504,7 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo
for (IBreakpointDMContext context : contexts) {
if (context instanceof MIBreakpointDMContext) {
MIBreakpointDMContext ctx = (MIBreakpointDMContext) context;
if (ctx.getReference() == targetBreakpointID) {
if (ctx.getReference().equals(targetBreakpointID)) {
return bps.get(context);
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2012, 2015 Mentor Graphics and others.
* Copyright (c) 2012, 2016 Mentor Graphics and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -109,24 +109,24 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
/**
* Collection of breakpoints created from the GDB console or outside of Eclipse
*/
private Map<IBreakpointsTargetDMContext, Map<Integer, MIBreakpoint>> fCreatedTargetBreakpoints;
private Map<IBreakpointsTargetDMContext, Map<String, MIBreakpoint>> fCreatedTargetBreakpoints;
/**
* Collection of breakpoints deleted from the GDB console or outside of Eclipse
*/
private Map<IBreakpointsTargetDMContext, Set<Integer>> fDeletedTargetBreakpoints;
private Map<IBreakpointsTargetDMContext, Set<String>> fDeletedTargetBreakpoints;
/**
* Collection of pending breakpoint modifications
*/
private Map<IBreakpointsTargetDMContext, Map<Integer, MIBreakpoint>> fPendingModifications;
private Map<IBreakpointsTargetDMContext, Map<String, MIBreakpoint>> fPendingModifications;
public MIBreakpointsSynchronizer(DsfSession session) {
super(session);
fTrackedTargets = new HashSet<IBreakpointsTargetDMContext>();
fCreatedTargetBreakpoints = new HashMap<IBreakpointsTargetDMContext, Map<Integer, MIBreakpoint>>();
fDeletedTargetBreakpoints = new HashMap<IBreakpointsTargetDMContext, Set<Integer>>();
fPendingModifications = new HashMap<IBreakpointsTargetDMContext, Map<Integer, MIBreakpoint>>();
fCreatedTargetBreakpoints = new HashMap<IBreakpointsTargetDMContext, Map<String, MIBreakpoint>>();
fDeletedTargetBreakpoints = new HashMap<IBreakpointsTargetDMContext, Set<String>>();
fPendingModifications = new HashMap<IBreakpointsTargetDMContext, Map<String, MIBreakpoint>>();
}
@Override
@ -219,20 +219,20 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
}
// Store the target breakpoint data
Map<Integer, MIBreakpointDMData> contextBreakpoints = breakpointsService.getBreakpointMap(bpTargetDMC);
Map<String, MIBreakpointDMData> contextBreakpoints = breakpointsService.getBreakpointMap(bpTargetDMC);
if (contextBreakpoints == null) {
contextBreakpoints = breakpointsService.createNewBreakpointMap(bpTargetDMC);
}
contextBreakpoints.put(Integer.valueOf(miBpt.getNumber()), new MIBreakpointDMData(miBpt));
contextBreakpoints.put(miBpt.getNumber(), new MIBreakpointDMData(miBpt));
// Store the created target breakpoint to prevent setting it again on the target
// when addBreakpoint() is called.
Map<Integer, MIBreakpoint> targetMap = fCreatedTargetBreakpoints.get(bpTargetDMC);
Map<String, MIBreakpoint> targetMap = fCreatedTargetBreakpoints.get(bpTargetDMC);
if (targetMap == null) {
targetMap = new HashMap<Integer, MIBreakpoint>();
targetMap = new HashMap<String, MIBreakpoint>();
fCreatedTargetBreakpoints.put(bpTargetDMC, targetMap);
}
targetMap.put(Integer.valueOf(miBpt.getNumber()), miBpt);
targetMap.put(miBpt.getNumber(), miBpt);
// Convert the debug info file path into the file path in the local file system
String debuggerPath = getFileName(miBpt);
@ -277,9 +277,9 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
}
// Make sure the platform breakpoint's parameters are synchronized
// with the target breakpoint.
Map<Integer, MIBreakpoint> map = fPendingModifications.get(bpTargetDMC);
Map<String, MIBreakpoint> map = fPendingModifications.get(bpTargetDMC);
if (map != null) {
MIBreakpoint mod = map.remove(Integer.valueOf(miBpt.getNumber()));
MIBreakpoint mod = map.remove(miBpt.getNumber());
if (mod != null) {
targetBreakpointModified(bpTargetDMC, plBpt, mod);
}
@ -296,7 +296,10 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
});
}
public void targetBreakpointDeleted(final int id) {
/**
* @since 5.0
*/
public void targetBreakpointDeleted(final String id) {
MIBreakpoints breakpointsService = getBreakpointsService();
final MIBreakpointsManager bm = getBreakpointsManager();
if (breakpointsService == null || bm == null) {
@ -322,12 +325,12 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
IBreakpoint plBpt = bm.findPlatformBreakpoint(bpDMC);
if (plBpt instanceof ICBreakpoint) {
Set<Integer> set = fDeletedTargetBreakpoints.get(bpTargetDMC);
Set<String> set = fDeletedTargetBreakpoints.get(bpTargetDMC);
if (set == null) {
set = new HashSet<Integer>();
set = new HashSet<String>();
fDeletedTargetBreakpoints.put(bpTargetDMC, set);
}
set.add(Integer.valueOf(id));
set.add(id);
try {
int threadId = Integer.parseInt(data.getThreadId());
@ -390,7 +393,7 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
if (bpTargetDMC == null) {
return;
}
final Map<Integer, MIBreakpointDMData> contextBreakpoints = breakpointsService.getBreakpointMap(bpTargetDMC);
final Map<String, MIBreakpointDMData> contextBreakpoints = breakpointsService.getBreakpointMap(bpTargetDMC);
if (contextBreakpoints == null) {
return;
}
@ -399,12 +402,12 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
if (!(b instanceof ICBreakpoint)) {
// Platform breakpoint hasn't been created yet. Store the latest
// modification data, it will be picked up later.
Map<Integer, MIBreakpoint> map = fPendingModifications.get(bpTargetDMC);
Map<String, MIBreakpoint> map = fPendingModifications.get(bpTargetDMC);
if (map == null) {
map = new HashMap<Integer, MIBreakpoint>();
map = new HashMap<String, MIBreakpoint>();
fPendingModifications.put(bpTargetDMC, map);
}
map.put(Integer.valueOf(miBpt.getNumber()), miBpt);
map.put(miBpt.getNumber(), miBpt);
}
else {
ICBreakpoint plBpt = (ICBreakpoint)b;
@ -417,9 +420,9 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
IBreakpointsTargetDMContext bpTargetDMC,
ICBreakpoint plBpt,
MIBreakpoint miBpt) {
Map<Integer, MIBreakpointDMData> contextBreakpoints = getBreakpointsService().getBreakpointMap(bpTargetDMC);
MIBreakpointDMData oldData = contextBreakpoints.get(Integer.valueOf(miBpt.getNumber()));
contextBreakpoints.put(Integer.valueOf(miBpt.getNumber()), new MIBreakpointDMData(miBpt));
Map<String, MIBreakpointDMData> contextBreakpoints = getBreakpointsService().getBreakpointMap(bpTargetDMC);
MIBreakpointDMData oldData = contextBreakpoints.get(miBpt.getNumber());
contextBreakpoints.put(miBpt.getNumber(), new MIBreakpointDMData(miBpt));
try {
if (plBpt.isEnabled() != miBpt.isEnabled()) {
plBpt.setEnabled(miBpt.isEnabled());
@ -482,7 +485,7 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
}
}
catch(CoreException e) {
contextBreakpoints.put(Integer.valueOf(miBpt.getNumber()), oldData);
contextBreakpoints.put(miBpt.getNumber(), oldData);
GdbPlugin.log(e.getStatus());
}
}
@ -898,7 +901,7 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
IBreakpointsTargetDMContext context,
Map<String, Object> attributes,
DataRequestMonitor<MIBreakpoint> rm) {
Map<Integer, MIBreakpoint> map = fCreatedTargetBreakpoints.get(context);
Map<String, MIBreakpoint> map = fCreatedTargetBreakpoints.get(context);
if (map == null) {
rm.done();
return;
@ -1083,9 +1086,9 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
}
public void removeCreatedTargetBreakpoint(IBreakpointsTargetDMContext context, MIBreakpoint miBpt) {
Map<Integer, MIBreakpoint> map = fCreatedTargetBreakpoints.get(context);
Map<String, MIBreakpoint> map = fCreatedTargetBreakpoints.get(context);
if (map != null) {
map.remove(Integer.valueOf(miBpt.getNumber()));
map.remove(miBpt.getNumber());
}
}
@ -1163,10 +1166,11 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
return isPlatformLineBreakpoint(plBpt, miBpt, fileName);
}
public boolean isTargetBreakpointDeleted(IBreakpointsTargetDMContext context, int bpId, boolean remove) {
Set<Integer> set = fDeletedTargetBreakpoints.get(context);
/** @since 5.0 */
public boolean isTargetBreakpointDeleted(IBreakpointsTargetDMContext context, String bpId, boolean remove) {
Set<String> set = fDeletedTargetBreakpoints.get(context);
if (set != null) {
return (remove) ? set.remove(Integer.valueOf(bpId)) : set.contains(Integer.valueOf(bpId));
return (remove) ? set.remove(bpId) : set.contains(bpId);
}
return false;
}
@ -1461,15 +1465,15 @@ public class MIBreakpointsSynchronizer extends AbstractDsfService implements IMI
// This will happen for GDB < 7.4 where the container is the breakpoint target.
// For GDB >= 7.4, GDB is the breakpoint target and will not be removed.
IBreakpointsTargetDMContext bpTargetDMContext = (IBreakpointsTargetDMContext)e.getDMContext();
Map<Integer, MIBreakpoint> createdBreakpoints = fCreatedTargetBreakpoints.remove(bpTargetDMContext);
Map<String, MIBreakpoint> createdBreakpoints = fCreatedTargetBreakpoints.remove(bpTargetDMContext);
if (createdBreakpoints != null) {
createdBreakpoints.clear();
}
Map<Integer, MIBreakpoint> modifications = fPendingModifications.remove(bpTargetDMContext);
Map<String, MIBreakpoint> modifications = fPendingModifications.remove(bpTargetDMContext);
if (modifications != null) {
modifications.clear();
}
Set<Integer> deletedBreakpoints = fDeletedTargetBreakpoints.remove(bpTargetDMContext);
Set<String> deletedBreakpoints = fDeletedTargetBreakpoints.remove(bpTargetDMContext);
if (deletedBreakpoints != null) {
deletedBreakpoints.clear();
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2006, 2015 Wind River Systems and others.
* Copyright (c) 2006, 2016 Wind River Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -524,9 +524,9 @@ public class MIRunControl extends AbstractDsfService implements IMIRunControl, I
MIBreakpointDMContext _bp = null;
if (e instanceof MIBreakpointHitEvent) {
int bpId = ((MIBreakpointHitEvent)e).getNumber();
String bpId = ((MIBreakpointHitEvent)e).getNumber();
IBreakpointsTargetDMContext bpsTarget = DMContexts.getAncestorOfType(e.getDMContext(), IBreakpointsTargetDMContext.class);
if (bpsTarget != null && bpId >= 0) {
if (bpsTarget != null && !bpId.isEmpty()) {
_bp = new MIBreakpointDMContext(getSession().getId(), new IDMContext[] {bpsTarget}, bpId);
}
}

View file

@ -319,7 +319,8 @@ public class CommandFactory {
return new CLIMaintenance(ctx, subCommand);
}
public ICommand<MIInfo> createCLIPasscount(IBreakpointsTargetDMContext ctx, int breakpoint, int passcount) {
/** @since 5.0 */
public ICommand<MIInfo> createCLIPasscount(IBreakpointsTargetDMContext ctx, String breakpoint, int passcount) {
return new CLIPasscount(ctx, breakpoint, passcount);
}
@ -393,27 +394,33 @@ public class CommandFactory {
return new MIAddInferior(ctx);
}
public ICommand<MIInfo> createMIBreakAfter(IBreakpointsTargetDMContext ctx, int breakpoint, int ignoreCount) {
/** @since 5.0 */
public ICommand<MIInfo> createMIBreakAfter(IBreakpointsTargetDMContext ctx, String breakpoint, int ignoreCount) {
return new MIBreakAfter(ctx, breakpoint, ignoreCount);
}
public ICommand<MIInfo> createMIBreakCommands(IBreakpointsTargetDMContext ctx, int breakpoint, String[] commands) {
/** @since 5.0 */
public ICommand<MIInfo> createMIBreakCommands(IBreakpointsTargetDMContext ctx, String breakpoint, String[] commands) {
return new MIBreakCommands(ctx, breakpoint, commands);
}
public ICommand<MIInfo> createMIBreakCondition(IBreakpointsTargetDMContext ctx, int breakpoint, String condition) {
/** @since 5.0 */
public ICommand<MIInfo> createMIBreakCondition(IBreakpointsTargetDMContext ctx, String breakpoint, String condition) {
return new MIBreakCondition(ctx, breakpoint, condition);
}
public ICommand<MIInfo> createMIBreakDelete(IBreakpointsTargetDMContext ctx, int[] array) {
/** @since 5.0 */
public ICommand<MIInfo> createMIBreakDelete(IBreakpointsTargetDMContext ctx, String[] array) {
return new MIBreakDelete(ctx, array);
}
public ICommand<MIInfo> createMIBreakDisable(IBreakpointsTargetDMContext ctx, int[] array) {
/** @since 5.0 */
public ICommand<MIInfo> createMIBreakDisable(IBreakpointsTargetDMContext ctx, String[] array) {
return new MIBreakDisable(ctx, array);
}
public ICommand<MIInfo> createMIBreakEnable(IBreakpointsTargetDMContext ctx, int[] array) {
/** @since 5.0 */
public ICommand<MIInfo> createMIBreakEnable(IBreakpointsTargetDMContext ctx, String[] array) {
return new MIBreakEnable(ctx, array);
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2009, 2010 Ericsson and others.
* Copyright (c) 2009, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -22,9 +22,10 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
* @since 3.0
*/
public class CLIPasscount extends CLICommand<MIInfo> {
public CLIPasscount(IBreakpointsTargetDMContext ctx, int breakpoint, int passcount) {
/** @since 5.0 */
public CLIPasscount(IBreakpointsTargetDMContext ctx, String breakpoint, int passcount) {
super(ctx, "passcount"); //$NON-NLS-1$
setParameters(new String[] { Integer.toString(passcount), Integer.toString(breakpoint) });
setParameters(new String[] { Integer.toString(passcount), breakpoint });
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2007, 2010 Ericsson and others.
* Copyright (c) 2007, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -25,7 +25,8 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
public class MIBreakAfter extends MICommand<MIInfo>
{
public MIBreakAfter(IBreakpointsTargetDMContext ctx, int breakpoint, int ignoreCount) {
super(ctx, "-break-after", new String[] { Integer.toString(breakpoint), Integer.toString(ignoreCount) }); //$NON-NLS-1$
/** @since 5.0 */
public MIBreakAfter(IBreakpointsTargetDMContext ctx, String breakpoint, int ignoreCount) {
super(ctx, "-break-after", new String[] { breakpoint, Integer.toString(ignoreCount) }); //$NON-NLS-1$
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2010 Ericsson and others.
* Copyright (c) 2010, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -29,13 +29,14 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
public class MIBreakCommands extends MICommand<MIInfo>
{
public MIBreakCommands(IBreakpointsTargetDMContext ctx, int breakpoint, String[] commands) {
/** @since 5.0 */
public MIBreakCommands(IBreakpointsTargetDMContext ctx, String breakpoint, String[] commands) {
super(ctx, "-break-commands"); //$NON-NLS-1$
if (commands == null) {
setParameters(new String[] { Integer.toString(breakpoint) });
setParameters(new String[] { breakpoint });
} else {
String[] params = new String[commands.length + 1];
params[0] = Integer.toString(breakpoint);
params[0] = breakpoint;
for (int i = 1; i < params.length; i++) {
params[i] = commands[i-1];
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2007, 2011 Ericsson and others.
* Copyright (c) 2007, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -36,11 +36,11 @@ public class MIBreakCondition extends MICommand<MIInfo>
*
* See bug 213076 for more information.
*/
public MIBreakCondition(IBreakpointsTargetDMContext ctx, int breakpoint, String condition) {
/** @since 5.0 */
public MIBreakCondition(IBreakpointsTargetDMContext ctx, String breakpoint, String condition) {
super(ctx, "-break-condition"); //$NON-NLS-1$
setParameters(new Adjustable[]{ new MIStandardParameterAdjustable(Integer.toString(breakpoint)),
setParameters(new Adjustable[]{ new MIStandardParameterAdjustable(breakpoint),
new NoChangeAdjustable(condition) });
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2009 QNX Software Systems and others.
* Copyright (c) 2000, 2016 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -29,12 +29,13 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
public class MIBreakDelete extends MICommand<MIInfo>
{
public MIBreakDelete (IBreakpointsTargetDMContext ctx, int[] array) {
/** @since 5.0 */
public MIBreakDelete (IBreakpointsTargetDMContext ctx, String[] array) {
super(ctx, "-break-delete"); //$NON-NLS-1$
if (array != null && array.length > 0) {
String[] brkids = new String[array.length];
for (int i = 0; i < array.length; i++) {
brkids[i] = Integer.toString(array[i]);
brkids[i] = array[i];
}
setParameters(brkids);
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2009 QNX Software Systems and others.
* Copyright (c) 2000, 2016 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -28,12 +28,13 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
public class MIBreakDisable extends MICommand<MIInfo>
{
public MIBreakDisable (IBreakpointsTargetDMContext ctx, int[] array) {
/** @since 5.0 */
public MIBreakDisable (IBreakpointsTargetDMContext ctx, String[] array) {
super(ctx, "-break-disable"); //$NON-NLS-1$
if (array != null && array.length > 0) {
String[] brkids = new String[array.length];
for (int i = 0; i < array.length; i++) {
brkids[i] = Integer.toString(array[i]);
brkids[i] = array[i];
}
setParameters(brkids);
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2009 QNX Software Systems and others.
* Copyright (c) 2000, 2016 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -27,12 +27,13 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
public class MIBreakEnable extends MICommand<MIInfo>
{
public MIBreakEnable (IBreakpointsTargetDMContext ctx, int[] array) {
/** @since 5.0 */
public MIBreakEnable (IBreakpointsTargetDMContext ctx, String[] array) {
super(ctx, "-break-enable"); //$NON-NLS-1$
if (array != null && array.length > 0) {
String[] brkids = new String[array.length];
for (int i = 0; i < array.length; i++) {
brkids[i] = Integer.toString(array[i]);
brkids[i] = array[i];
}
setParameters(brkids);
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2009, 2010 QNX Software Systems and others.
* Copyright (c) 2009, 2016 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -43,20 +43,22 @@ import org.eclipse.debug.core.model.IBreakpoint;
@Immutable
public class MIBreakpointHitEvent extends MIStoppedEvent {
int bkptno;
private String bkptno;
protected MIBreakpointHitEvent(IExecutionDMContext ctx, int token, MIResult[] results, MIFrame frame, int bkptno) {
/** @since 5.0 */
protected MIBreakpointHitEvent(IExecutionDMContext ctx, int token, MIResult[] results, MIFrame frame, String bkptno) {
super(ctx, token, results, frame);
this.bkptno = bkptno;
}
public int getNumber() {
/** @since 5.0 */
public String getNumber() {
return bkptno;
}
@ConfinedToDsfExecutor("")
public static MIBreakpointHitEvent parse(IExecutionDMContext dmc, int token, MIResult[] results) {
int bkptno = -1;
String bkptno = ""; //$NON-NLS-1$
for (int i = 0; i < results.length; i++) {
String var = results[i].getVariable();
@ -68,7 +70,7 @@ public class MIBreakpointHitEvent extends MIStoppedEvent {
if (var.equals("bkptno")) { //$NON-NLS-1$
try {
bkptno = Integer.parseInt(str.trim());
bkptno = str.trim();
} catch (NumberFormatException e) {
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2010 IBM Corporation and others.
* Copyright (c) 2010, 2016 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -27,8 +27,9 @@ public class MICatchpointHitEvent extends MIBreakpointHitEvent {
*/
private String fReason;
/** @since 5.0 */
protected MICatchpointHitEvent(IExecutionDMContext ctx, int token,
MIResult[] results, MIFrame frame, int bkptno, String reason) {
MIResult[] results, MIFrame frame, String bkptno, String reason) {
super(ctx, token, results, frame, bkptno);
fReason = reason;
}
@ -58,7 +59,7 @@ public class MICatchpointHitEvent extends MIBreakpointHitEvent {
StringTokenizer tokenizer = new StringTokenizer(streamRecord.getString());
tokenizer.nextToken(); // "Catchpoint"
try {
int bkptNumber = Integer.parseInt(tokenizer.nextToken()); // "1"
String bkptNumber = tokenizer.nextToken(); // "1"
StringBuilder reason = new StringBuilder();
boolean first = true;
while (tokenizer.hasMoreElements()) {
@ -95,8 +96,10 @@ public class MICatchpointHitEvent extends MIBreakpointHitEvent {
* < 7.0 case we use the reason provided in the stream record (e.g.,
* "exception caught"). The inconsistency is fine. The user will get the
* insight he needs either way.
*
* @since 5.0
*/
public static MICatchpointHitEvent parse(IExecutionDMContext dmc, int token, MIResult[] results, int bkptNumber, String gdbKeyword) {
public static MICatchpointHitEvent parse(IExecutionDMContext dmc, int token, MIResult[] results, String bkptNumber, String gdbKeyword) {
MIStoppedEvent stoppedEvent = MIStoppedEvent.parse(dmc, token, results);
return new MICatchpointHitEvent(stoppedEvent.getDMContext(), token, results, stoppedEvent.getFrame(), bkptNumber, gdbKeyword);
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2009 QNX Software Systems and others.
* Copyright (c) 2009, 2016 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -26,16 +26,18 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIValue;
@Immutable
public class MIWatchpointScopeEvent extends MIStoppedEvent {
final private int number;
final private String number;
/** @since 5.0 */
protected MIWatchpointScopeEvent(
IExecutionDMContext ctx, int token, MIResult[] results, MIFrame frame, int number)
IExecutionDMContext ctx, int token, MIResult[] results, MIFrame frame, String number)
{
super(ctx, token, results, frame);
this.number = number;
}
public int getNumber() {
/** @since 5.0 */
public String getNumber() {
return number;
}
@ -44,7 +46,7 @@ public class MIWatchpointScopeEvent extends MIStoppedEvent {
*/
public static MIWatchpointScopeEvent parse(IExecutionDMContext dmc, int token, MIResult[] results)
{
int number = 0;
String number = ""; //$NON-NLS-1$
for (int i = 0; i < results.length; i++) {
String var = results[i].getVariable();
MIValue value = results[i].getMIValue();
@ -53,7 +55,7 @@ public class MIWatchpointScopeEvent extends MIStoppedEvent {
if (value instanceof MIConst) {
String str = ((MIConst) value).getString();
try {
number = Integer.parseInt(str.trim());
number = str.trim();
} catch (NumberFormatException e) {
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2009 QNX Software Systems and others.
* Copyright (c) 2009, 2016 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -27,14 +27,17 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIValue;
@Immutable
public class MIWatchpointTriggerEvent extends MIStoppedEvent {
final private int number;
final private String number;
final private String exp;
final private String oldValue;
final private String newValue;
/**
* @since 5.0
*/
protected MIWatchpointTriggerEvent(
IExecutionDMContext ctx, int token, MIResult[] results, MIFrame frame,
int number, String exp, String oldValue, String newValue)
String number, String exp, String oldValue, String newValue)
{
super(ctx, token, results, frame);
this.number = number;
@ -43,7 +46,10 @@ public class MIWatchpointTriggerEvent extends MIStoppedEvent {
this.newValue = newValue;
}
public int getNumber() {
/**
* @since 5.0
*/
public String getNumber() {
return number;
}
@ -64,7 +70,7 @@ public class MIWatchpointTriggerEvent extends MIStoppedEvent {
*/
public static MIWatchpointTriggerEvent parse(IExecutionDMContext dmc, int token, MIResult[] results)
{
int number = 0;
String number = ""; //$NON-NLS-1$
String exp = ""; //$NON-NLS-1$
String oldValue = ""; //$NON-NLS-1$
String newValue = ""; //$NON-NLS-1$
@ -83,7 +89,7 @@ public class MIWatchpointTriggerEvent extends MIStoppedEvent {
if (wptValue instanceof MIConst) {
String str = ((MIConst) wptValue).getString();
try {
number = Integer.parseInt(str);
number = str;
} catch (NumberFormatException e) {
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2012 Ericsson and others.
* Copyright (c) 2012, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -53,7 +53,7 @@ import java.util.Set;
*/
public class CLIInfoBreakInfo extends MIInfo {
private Map<Integer, String[]> fBreakpointToGroupMap = new HashMap<Integer, String[]>();
private Map<String, String[]> fBreakpointToGroupMap = new HashMap<String, String[]>();
public CLIInfoBreakInfo(MIOutput out) {
super(out);
@ -65,7 +65,7 @@ public class CLIInfoBreakInfo extends MIInfo {
* each breakpoint applies. If there is only a single thread-group being debugged, an
* empty map will be returned.
*/
public Map<Integer, String[]> getBreakpointToGroupMap() {
public Map<String, String[]> getBreakpointToGroupMap() {
return fBreakpointToGroupMap;
}
@ -81,14 +81,8 @@ public class CLIInfoBreakInfo extends MIInfo {
// Get the breakpoint id by extracting the first element before a white space
// or before a period. We can set a limit of 2 since we only need the first element
String bpIdStr = line.split("[\\s\\.]", 2)[0]; //$NON-NLS-1$
int bpId = 0;
try {
bpId = Integer.parseInt(bpIdStr);
} catch (NumberFormatException e) {
assert false;
}
String[] groups = fBreakpointToGroupMap.get(bpId);
String[] groups = fBreakpointToGroupMap.get(bpIdStr);
Set<String> groupIdList = new HashSet<String>();
if (groups != null) {
// Since we already know about this breakpoint id we must retain the list
@ -104,7 +98,7 @@ public class CLIInfoBreakInfo extends MIInfo {
groupIdList.add("i" + id.trim()); //$NON-NLS-1$
}
fBreakpointToGroupMap.put(bpId, groupIdList.toArray(new String[groupIdList.size()]));
fBreakpointToGroupMap.put(bpIdStr, groupIdList.toArray(new String[groupIdList.size()]));
}
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2009, 2015 Ericsson and others.
* Copyright (c) 2009, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -28,9 +28,10 @@ public class CLITraceInfo extends MIInfo {
parse();
}
private Integer fReference = null;
private String fReference = null;
public Integer getTraceReference(){
/** @since 5.0 */
public String getTraceReference(){
return fReference;
}
@ -47,11 +48,7 @@ public class CLITraceInfo extends MIInfo {
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
String id = matcher.group(1);
try {
fReference = Integer.parseInt(id);
} catch (NumberFormatException e) {
fReference = null;
}
fReference = id;
}
}
}

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2014 QNX Software Systems and others.
* Copyright (c) 2000, 2016 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -67,7 +67,7 @@ import org.eclipse.cdt.dsf.gdb.internal.tracepointactions.TracepointActionManage
*/
public class MIBreakpoint {
int number = -1;
String number = ""; //$NON-NLS-1$
String type = ""; //$NON-NLS-1$
String disp = ""; //$NON-NLS-1$
boolean enabled = false;
@ -199,7 +199,7 @@ public class MIBreakpoint {
*/
public MIBreakpoint(String cliResult) {
if (cliResult.startsWith("Catchpoint ")) { //$NON-NLS-1$
int bkptNumber = 0;
String bkptNumber = ""; //$NON-NLS-1$
StringTokenizer tokenizer = new StringTokenizer(cliResult);
for (int i = 0; tokenizer.hasMoreTokens(); i++) {
@ -208,7 +208,7 @@ public class MIBreakpoint {
case 0: // first token is "Catchpoint"
break;
case 1: // second token is the breakpoint number
bkptNumber = Integer.parseInt(sub);
bkptNumber = sub;
break;
case 2: // third token is the event type; drop the parenthesis
if (sub.startsWith("(")) { //$NON-NLS-1$
@ -233,7 +233,8 @@ public class MIBreakpoint {
// Properties getters
///////////////////////////////////////////////////////////////////////////
public int getNumber() {
/** @since 5.0 */
public String getNumber() {
return number;
}
@ -506,10 +507,7 @@ public class MIBreakpoint {
}
if (var.equals("number")) { //$NON-NLS-1$
try {
number = Integer.parseInt(str.trim());
} catch (NumberFormatException e) {
}
number = str.trim();
} else if (var.equals("type")) { //$NON-NLS-1$
// Note that catchpoints are reported by gdb as address
// breakpoints; there's really nothing we can go on to determine
@ -552,10 +550,7 @@ public class MIBreakpoint {
} else if (var.equals("enabled")) { //$NON-NLS-1$
enabled = str.equals("y"); //$NON-NLS-1$
} else if (var.equals("addr")) { //$NON-NLS-1$
try {
address = str.trim();
} catch (NumberFormatException e) {
}
address = str.trim();
} else if (var.equals("func")) { //$NON-NLS-1$
func = str;
} else if (var.equals("file")) { //$NON-NLS-1$

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2007, 2015 Ericsson and others.
* Copyright (c) 2007, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -187,19 +187,19 @@ public class SyncUtil {
return eventWaitor.waitForEvent(timeout);
}
public static int addBreakpoint(String location) throws Throwable {
public static String addBreakpoint(String location) throws Throwable {
return addBreakpoint(location, DefaultTimeouts.get(ETimeout.addBreakpoint));
}
public static int addBreakpoint(String location, int timeout) throws Throwable {
public static String addBreakpoint(String location, int timeout) throws Throwable {
return addBreakpoint(location, true, timeout);
}
public static int addBreakpoint(String location, boolean temporary) throws Throwable {
public static String addBreakpoint(String location, boolean temporary) throws Throwable {
return addBreakpoint(location, temporary, DefaultTimeouts.get(ETimeout.addBreakpoint));
}
public static int addBreakpoint(final String location, final boolean temporary, int timeout)
public static String addBreakpoint(final String location, final boolean temporary, int timeout)
throws Throwable {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
@ -220,7 +220,7 @@ public class SyncUtil {
}
public static int[] getBreakpointList(int timeout) throws Throwable {
public static String[] getBreakpointList(int timeout) throws Throwable {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
final IBreakpointsTargetDMContext bpTargetDmc = DMContexts.getAncestorOfType(containerDmc, IBreakpointsTargetDMContext.class);
@ -235,18 +235,18 @@ public class SyncUtil {
MIBreakListInfo info = query.get(timeout, TimeUnit.MILLISECONDS);
MIBreakpoint[] breakpoints = info.getMIBreakpoints();
int[] result = new int[breakpoints.length];
String[] result = new String[breakpoints.length];
for (int i = 0; i < breakpoints.length; i++) {
result[i] = breakpoints[i].getNumber();
}
return result;
}
public static void deleteBreakpoint(int breakpointIndex, int timeout) throws Throwable {
deleteBreakpoint(new int[] {breakpointIndex}, timeout);
public static void deleteBreakpoint(String breakpointIndex, int timeout) throws Throwable {
deleteBreakpoint(new String[] {breakpointIndex}, timeout);
}
public static void deleteBreakpoint(final int[] breakpointIndices, int timeout) throws Throwable {
public static void deleteBreakpoint(final String[] breakpointIndices, int timeout) throws Throwable {
IContainerDMContext containerDmc = SyncUtil.getContainerContext();
final IBreakpointsTargetDMContext bpTargetDmc = DMContexts.getAncestorOfType(containerDmc, IBreakpointsTargetDMContext.class);

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2012, 2015 Mentor Graphics and others.
* Copyright (c) 2012, 2016 Mentor Graphics and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -374,22 +374,22 @@ public class GDBConsoleBreakpointsTest extends BaseParametrizedTestCase {
queueConsoleCommand(String.format("%s %s", command, expression));
}
private void deleteConsoleBreakpoint(int bpId) throws Throwable {
queueConsoleCommand(String.format("delete %d", bpId));
private void deleteConsoleBreakpoint(String bpId) throws Throwable {
queueConsoleCommand(String.format("delete %s", bpId));
}
private void enableConsoleBreakpoint(int bpId, boolean enable) throws Throwable {
private void enableConsoleBreakpoint(String bpId, boolean enable) throws Throwable {
String cmd = (enable) ? "enable" : "disable";
queueConsoleCommand(String.format("%s %d", cmd, bpId));
queueConsoleCommand(String.format("%s %s", cmd, bpId));
}
private void setConsoleBreakpointIgnoreCount(int bpId, int ignoreCount) throws Throwable {
private void setConsoleBreakpointIgnoreCount(String bpId, int ignoreCount) throws Throwable {
Assert.assertTrue(ignoreCount >= 0);
queueConsoleCommand(String.format("ignore %d %d", bpId, ignoreCount));
queueConsoleCommand(String.format("ignore %s %d", bpId, ignoreCount));
}
private void setConsoleBreakpointCondition(int bpId, String condition) throws Throwable {
queueConsoleCommand(String.format("condition %d %s", bpId, condition));
private void setConsoleBreakpointCondition(String bpId, String condition) throws Throwable {
queueConsoleCommand(String.format("condition %s %s", bpId, condition));
}
private MIBreakpoint[] getTargetBreakpoints() throws Throwable {

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2007, 2015 Ericsson and others.
* Copyright (c) 2007, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -117,7 +117,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
protected final int WP_OOS = Events.WP_OOS.ordinal();
protected int[] fBreakpointEvents = new int[Events.values().length];
protected int fBreakpointEventCount;
protected int fBreakpointRef;
protected String fBreakpointRef;
// Some useful constants
protected final String BREAKPOINT_TYPE_TAG = MIBreakpoints.BREAKPOINT_TYPE;
protected final String BREAKPOINT_TAG = MIBreakpoints.BREAKPOINT;
@ -330,7 +330,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
* @param timeout
* max wait time, in milliseconds
*/
private void waitForBreakpointEvent(int count, final int timeout) throws Exception {
private void waitForBreakpointEvent(final int count, final int timeout) throws Exception {
try {
Timeout.builder().withTimeout(timeout, TimeUnit.MILLISECONDS).build().apply(
new Statement() {
@ -1097,9 +1097,9 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
MIBreakpointDMData svc_bp2 = (MIBreakpointDMData) getBreakpoint(breakpoints[1]);
// The breakpoint references are not necessarily retrieved in the order the
// breakpoints were initially set...
int ref1 = breakpoint1.getNumber();
int ref2 = svc_bp1.getNumber();
if (ref1 == ref2) {
String ref1 = breakpoint1.getNumber();
String ref2 = svc_bp1.getNumber();
if (ref1.equals(ref2)) {
assertTrue("BreakpointService problem: breakpoint mismatch", svc_bp1.equals(breakpoint1));
assertTrue("BreakpointService problem: breakpoint mismatch", svc_bp2.equals(breakpoint2));
} else {
@ -1172,9 +1172,9 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
MIBreakpointDMData svc_bp2 = (MIBreakpointDMData) getBreakpoint(breakpoints[1]);
// The breakpoint references are not necessarily retrieved in the order the
// breakpoints were initially set...
int ref1 = breakpoint1.getNumber();
int ref2 = svc_bp1.getNumber();
if (ref1 == ref2) {
String ref1 = breakpoint1.getNumber();
String ref2 = svc_bp1.getNumber();
if (ref1.equals(ref2)) {
assertTrue("BreakpointService problem: breakpoint mismatch", svc_bp1.equals(breakpoint1));
assertTrue("BreakpointService problem: breakpoint mismatch", svc_bp2.equals(breakpoint2));
} else {
@ -1219,14 +1219,14 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!breakpoint1.isPending());
clearEventCounters();
assertTrue("Did not stop because of breakpoint, but stopped because of: " +
event.getClass().getCanonicalName(), event instanceof MIBreakpointHitEvent);
assertTrue("Did not stop because of the correct breakpoint at line " + LINE_NUMBER_5,
((MIBreakpointHitEvent) event).getNumber() == ref.getReference());
((MIBreakpointHitEvent) event).getNumber().equals(ref.getReference()));
}
// ------------------------------------------------------------------------
@ -1273,14 +1273,14 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!breakpoint1.isPending());
clearEventCounters();
assertTrue("Did not stop because of breakpoint, but stopped because of: " +
event.getClass().getCanonicalName(), event instanceof MIBreakpointHitEvent);
assertTrue("Did not stop because of the correct breakpoint at line " + LINE_NUMBER_5,
((MIBreakpointHitEvent) event).getNumber() == ref.getReference());
((MIBreakpointHitEvent) event).getNumber().equals(ref.getReference()));
}
///////////////////////////////////////////////////////////////////////////
// Add Watchpoint tests
@ -1475,7 +1475,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("Did not stop because of watchpoint, but stopped because of: " +
event.getClass().getCanonicalName(), event instanceof MIWatchpointTriggerEvent);
assertTrue("Did not stop because of the watchpoint",
((MIWatchpointTriggerEvent) event).getNumber() == watchpoint1.getReference());
((MIWatchpointTriggerEvent) event).getNumber().equals(watchpoint1.getReference()));
}
///////////////////////////////////////////////////////////////////////////
// Remove Breakpoint tests
@ -1527,7 +1527,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
public void removeBreakpoint_InvalidBreakpoint() throws Throwable {
// Create an invalid breakpoint reference
IBreakpointDMContext invalid_ref = new MIBreakpointDMContext((MIBreakpoints) fBreakpointService,
new IDMContext[] { fBreakpointsDmc }, 0);
new IDMContext[] { fBreakpointsDmc }, "0.0");
// Remove the invalid breakpoint
String expected = UNKNOWN_BREAKPOINT;
removeBreakpoint(invalid_ref);
@ -1714,7 +1714,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("Did not stop on a breakpoint!",
event instanceof MIBreakpointHitEvent);
assertTrue("Did not stop because of the correct breakpoint at line " + LINE_NUMBER_5,
((MIBreakpointHitEvent) event).getNumber() == ref1.getReference());
((MIBreakpointHitEvent) event).getNumber().equals(ref1.getReference()));
}
///////////////////////////////////////////////////////////////////////////
// Breakpoint Update tests
@ -1729,7 +1729,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
public void updateBreakpoint_InvalidBreakpoint() throws Throwable {
// Create an invalid breakpoint reference
IBreakpointDMContext invalid_ref = new MIBreakpointDMContext((MIBreakpoints) fBreakpointService,
new IDMContext[] { fBreakpointsDmc }, 0);
new IDMContext[] { fBreakpointsDmc }, "0.0");
// Update the invalid breakpoint
String expected = UNKNOWN_BREAKPOINT;
Map<String, Object> properties = new HashMap<String, Object>();
@ -1925,7 +1925,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("Did not stop on our modified breakpoint!",
event instanceof MIBreakpointHitEvent);
assertTrue("Did not stop because of the correct breakpoint at line " + LINE_NUMBER_5,
((MIBreakpointHitEvent) event).getNumber() == breakpoint2.getReference());
((MIBreakpointHitEvent) event).getNumber().equals(breakpoint2.getReference()));
}
// ------------------------------------------------------------------------
@ -2236,7 +2236,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("Did not stop on our modified breakpoint!",
event instanceof MIBreakpointHitEvent);
assertTrue("Did not stop because of the correct breakpoint at line " + LINE_NUMBER_5,
((MIBreakpointHitEvent) event).getNumber() == breakpoint2.getReference());
((MIBreakpointHitEvent) event).getNumber().equals(breakpoint2.getReference()));
}
// ------------------------------------------------------------------------
@ -2300,7 +2300,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint2.getNumber());
fBreakpointRef.equals(breakpoint2.getNumber()));
clearEventCounters();
}
@ -2358,7 +2358,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("Did not stop on a breakpoint!",
event instanceof MIBreakpointHitEvent);
assertTrue("Did not stop because of the correct breakpoint at line " + LINE_NUMBER_5,
((MIBreakpointHitEvent) event).getNumber() == ref1.getReference());
((MIBreakpointHitEvent) event).getNumber().equals(ref1.getReference()));
}
// ------------------------------------------------------------------------
@ -2423,7 +2423,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint2.getNumber());
fBreakpointRef.equals(breakpoint2.getNumber()));
clearEventCounters();
// Enable the first breakpoint
delta = new HashMap<String, Object>();
@ -2451,7 +2451,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
clearEventCounters();
}
@ -2510,7 +2510,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("Did not stop on our enabled breakpoint!",
event instanceof MIBreakpointHitEvent);
assertTrue("Did not stop because of the correct breakpoint at line " + LINE_NUMBER_5,
((MIBreakpointHitEvent) event).getNumber() == breakpoint1.getReference());
((MIBreakpointHitEvent) event).getNumber().equals(breakpoint1.getReference()));
}
private void queueConsoleCommand(final String command) throws Throwable {
@ -2574,7 +2574,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
event instanceof MIBreakpointHitEvent);
MIBreakpointDMData bpData = (MIBreakpointDMData) getBreakpoint(bps[0]);
assertTrue("Did not stop because of the correct breakpoint at line " + LINE_NUMBER_5,
((MIBreakpointHitEvent) event).getNumber() == bpData.getReference());
((MIBreakpointHitEvent) event).getNumber().equals(bpData.getReference()));
// Ensure that right BreakpointEvents were received
waitForBreakpointEvent(1);
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT event(s), received "
@ -2606,7 +2606,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
event instanceof MIBreakpointHitEvent);
bpData = (MIBreakpointDMData) getBreakpoint(bps[0]);
assertTrue("Did not stop because of the correct breakpoint at line " + LINE_NUMBER_5,
((MIBreakpointHitEvent) event).getNumber() == bpData.getReference());
((MIBreakpointHitEvent) event).getNumber().equals(bpData.getReference()));
// Ensure that right BreakpointEvents were received
waitForBreakpointEvent(1);
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT event(s), received "
@ -2653,7 +2653,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!breakpoint1.isPending());
clearEventCounters();
@ -2690,7 +2690,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!breakpoint1.isPending());
clearEventCounters();
@ -2731,7 +2731,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!breakpoint1.isPending());
clearEventCounters();
@ -2786,7 +2786,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!breakpoint1.isPending());
clearEventCounters();
@ -2830,7 +2830,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!breakpoint1.isPending());
clearEventCounters();
@ -2885,7 +2885,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 1);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!breakpoint1.isPending());
clearEventCounters();
@ -2927,7 +2927,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " WATCHPOINT_HIT event(s), received "
+ getBreakpointEventCount(WP_HIT), getBreakpointEventCount(WP_HIT) == 1);
assertTrue("BreakpointService problem: watchpoint mismatch",
fBreakpointRef == watchpoint1.getNumber());
fBreakpointRef.equals(watchpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!watchpoint1.isPending());
clearEventCounters();
@ -2969,7 +2969,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " WATCHPOINT_HIT event(s), received "
+ getBreakpointEventCount(WP_HIT), getBreakpointEventCount(WP_HIT) == 1);
assertTrue("BreakpointService problem: watchpoint mismatch",
fBreakpointRef == watchpoint1.getNumber());
fBreakpointRef.equals(watchpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!watchpoint1.isPending());
clearEventCounters();
@ -3012,7 +3012,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " WATCHPOINT_HIT event(s), received "
+ getBreakpointEventCount(WP_HIT), getBreakpointEventCount(WP_HIT) == 1);
assertTrue("BreakpointService problem: watchpoint mismatch",
fBreakpointRef == watchpoint1.getNumber());
fBreakpointRef.equals(watchpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!watchpoint1.isPending());
clearEventCounters();
@ -3068,7 +3068,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " WATCHPOINT_HIT event(s), received "
+ getBreakpointEventCount(WP_HIT), getBreakpointEventCount(WP_HIT) == 1);
assertTrue("BreakpointService problem: watchpoint mismatch",
fBreakpointRef == watchpoint1.getNumber());
fBreakpointRef.equals(watchpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!watchpoint1.isPending());
clearEventCounters();
@ -3128,7 +3128,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " WATCHPOINT_HIT event(s), received "
+ getBreakpointEventCount(WP_HIT), getBreakpointEventCount(WP_HIT) == 1);
assertTrue("BreakpointService problem: watchpoint mismatch",
fBreakpointRef == watchpoint1.getNumber());
fBreakpointRef.equals(watchpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!watchpoint1.isPending());
clearEventCounters();
@ -3176,7 +3176,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 1 + " WATCHPOINT_HIT event(s), received "
+ getBreakpointEventCount(WP_OOS), getBreakpointEventCount(WP_OOS) == 1);
assertTrue("BreakpointService problem: watchpoint mismatch",
fBreakpointRef == watchpoint1.getNumber());
fBreakpointRef.equals(watchpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (pending)",
!watchpoint1.isPending());
clearEventCounters();
@ -3354,7 +3354,7 @@ public class MIBreakpointsTest extends BaseParametrizedTestCase {
assertTrue("BreakpointEvent problem: expected " + 0 + " BREAKPOINT_HIT event(s), received "
+ getBreakpointEventCount(BP_HIT), getBreakpointEventCount(BP_HIT) == 0);
assertTrue("BreakpointService problem: breakpoint mismatch",
fBreakpointRef == breakpoint1.getNumber());
fBreakpointRef.equals(breakpoint1.getNumber()));
assertTrue("BreakpointService problem: breakpoint mismatch (not pending)",
breakpoint1.isPending());
clearEventCounters();

View file

@ -124,7 +124,7 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
/**
* The gdb breakpoint number associated with the most recent breakpoint event
*/
private int fBreakpointRef;
private String fBreakpointRef;
// NOTE: The back-end can reformat the condition. In order for the
// comparison to work, better specify the condition as the back-end
@ -701,7 +701,7 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
// The breakpoint references are not necessarily retrieved in the order the
// breakpoints were initially set...
if (bkpt1_svc.getNumber() == bkpt1_set.getNumber()) {
if (bkpt1_svc.getNumber().equals(bkpt1_set.getNumber())) {
assertEquals(bkpt2_svc.getNumber(), bkpt2_set.getNumber());
}
else {
@ -733,7 +733,7 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
// The breakpoint references are not necessarily retrieved in the order the
// breakpoints were initially set...
if (bkpt1_svc.getNumber() == bkpt1_set.getNumber()) {
if (bkpt1_svc.getNumber().equals(bkpt1_set.getNumber())) {
assertEquals(bkpt2_svc.getNumber(), bkpt2_set.getNumber());
}
else {
@ -1222,14 +1222,14 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
// Ensure the breakpoint service sees what we expect
IBreakpointDMContext[] breakpoints = getBreakpoints(fBreakpointsDmc);
assertEquals("Breakpoints service reports unexpected number of breakpoints", 2, breakpoints.length);
int throwCatchpointNumber = ((MIBreakpointDMData)getBreakpoint(refThrow)).getNumber();
String throwCatchpointNumber = ((MIBreakpointDMData)getBreakpoint(refThrow)).getNumber();
for (IBreakpointDMContext bkpt : breakpoints) {
MIBreakpointDMData bkpt_svc = (MIBreakpointDMData) getBreakpoint(bkpt);
assertEquals("Incorrect breakpoint condition", throwCatchpointNumber != bkpt_svc.getNumber(), bkpt_svc.isEnabled());
assertEquals("Incorrect breakpoint condition", !throwCatchpointNumber.equals(bkpt_svc.getNumber()), bkpt_svc.isEnabled());
}
// Resume the target. Should miss the throw catchpoint and stop at the catch one
int catchCatchpointNumber = ((MIBreakpointDMData)getBreakpoint(refCatch)).getNumber();
String catchCatchpointNumber = ((MIBreakpointDMData)getBreakpoint(refCatch)).getNumber();
resumeAndExpectBkptHit(catchCatchpointNumber, null);
// Ee-enable the throw catchpoint
@ -1382,7 +1382,7 @@ public class MICatchpointsTest extends BaseParametrizedTestCase {
* indicate a check isn't wanted
* @return the stoppped event
*/
private MIStoppedEvent resumeAndExpectBkptHit(int bkptNumber, Integer expectedVarValue) throws Throwable {
private MIStoppedEvent resumeAndExpectBkptHit(String bkptNumber, Integer expectedVarValue) throws Throwable {
// Resume the target. The throw catchpoint should get hit.
clearEventCounters();
MIStoppedEvent event = SyncUtil.resumeUntilStopped();

View file

@ -142,7 +142,7 @@ public class TraceFileTest extends BaseParametrizedTestCase {
startTracing();
MIStoppedEvent stoppedEvent = SyncUtil.resumeUntilStopped();
assertTrue(stoppedEvent instanceof MIBreakpointHitEvent
&& ((MIBreakpointHitEvent)stoppedEvent).getNumber() == bptDMC.getReference());
&& ((MIBreakpointHitEvent)stoppedEvent).getNumber().equals(bptDMC.getReference()));
stopTracing();
saveTraceData();
}