1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-09 18:56:02 +02:00

Bug 314557 - No error dialog when problems occur opening a memory monitor on a variable

This commit is contained in:
Ken Ryall 2010-05-26 22:30:00 +00:00
parent abef64cb07
commit d2fa899c83

View file

@ -141,9 +141,8 @@ public class DsfViewMemoryHandler extends AbstractHandler {
addDefaultRenderings(memBlock, memRendSite); addDefaultRenderings(memBlock, memRendSite);
} }
private void showExpressionInMemoryView(VariableExpressionVMC context, IExpressionDMData exprData, private IStatus showExpressionInMemoryView(VariableExpressionVMC context, IExpressionDMData exprData,
IMemoryRenderingSite memRendSite) { IMemoryRenderingSite memRendSite) {
try {
BasicType type = exprData.getBasicType(); BasicType type = exprData.getBasicType();
String exprString; String exprString;
if (type == BasicType.array || type == BasicType.pointer) { if (type == BasicType.array || type == BasicType.pointer) {
@ -152,17 +151,19 @@ public class DsfViewMemoryHandler extends AbstractHandler {
else { else {
exprString = "&(" + context.getExpression() + ")"; //$NON-NLS-1$ //$NON-NLS-2$ exprString = "&(" + context.getExpression() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
} }
try {
IDMContext dmc = context.getDMContext(); IDMContext dmc = context.getDMContext();
IMemoryBlockRetrieval retrieval = (IMemoryBlockRetrieval) context.getAdapter(IMemoryBlockRetrieval.class); IMemoryBlockRetrieval retrieval = (IMemoryBlockRetrieval) context.getAdapter(IMemoryBlockRetrieval.class);
if (retrieval == null && context instanceof IDebugElement) if (retrieval == null && context instanceof IDebugElement)
retrieval = ((IDebugElement)context).getDebugTarget(); retrieval = ((IDebugElement)context).getDebugTarget();
if (retrieval == null || !(retrieval instanceof DsfMemoryBlockRetrieval)) if (retrieval == null || !(retrieval instanceof DsfMemoryBlockRetrieval))
return; return Status.OK_STATUS;
DsfMemoryBlockRetrieval dsfRetrieval = (DsfMemoryBlockRetrieval) retrieval; DsfMemoryBlockRetrieval dsfRetrieval = (DsfMemoryBlockRetrieval) retrieval;
IMemoryBlockExtension memBlock = dsfRetrieval.getExtendedMemoryBlock(exprString, dmc); IMemoryBlockExtension memBlock = dsfRetrieval.getExtendedMemoryBlock(exprString, dmc);
renderMemoryBlock(memBlock, memRendSite); renderMemoryBlock(memBlock, memRendSite);
return Status.OK_STATUS;
} catch (DebugException e) { } catch (DebugException e) {
DsfUIPlugin.log(e); return DsfUIPlugin.newErrorStatus(IStatus.OK, "Can't view memory on " + exprString, e); //$NON-NLS-1$
} }
} }
@ -198,8 +199,7 @@ public class DsfViewMemoryHandler extends AbstractHandler {
Job job = new Job("View Memory") { //$NON-NLS-1$ Job job = new Job("View Memory") { //$NON-NLS-1$
@Override @Override
protected IStatus run(IProgressMonitor monitor) { protected IStatus run(IProgressMonitor monitor) {
showExpressionInMemoryView(context, exprData, memRendSite); return showExpressionInMemoryView(context, exprData, memRendSite);
return Status.OK_STATUS;
} }
}; };
job.setSystem(true); job.setSystem(true);