From 4aa3f06bb413e5621e2a67bec0e4ca05fbbd9e22 Mon Sep 17 00:00:00 2001 From: Teodor Madan Date: Tue, 25 Feb 2014 14:50:29 +0200 Subject: [PATCH] Bug 428990 - Breakpoint problem marker has a too generic error message Propagated GDB error message up to the top level Change-Id: I98b33a4d35af7b0bc3582dfa1572cd6a5bc07b58 Signed-off-by: Teodor Madan Reviewed-on: https://git.eclipse.org/r/22511 Reviewed-by: Marc Khouzam IP-Clean: Marc Khouzam Tested-by: Marc Khouzam --- .../cdt/dsf/gdb/service/GDBBreakpoints_7_0.java | 2 +- .../cdt/dsf/gdb/service/GDBBreakpoints_7_2.java | 2 +- .../eclipse/cdt/dsf/mi/service/MIBreakpoints.java | 6 +++--- .../cdt/dsf/mi/service/MIBreakpointsManager.java | 12 +++++++++++- .../src/org/eclipse/cdt/dsf/mi/service/Messages.java | 1 + .../eclipse/cdt/dsf/mi/service/Messages.properties | 3 ++- 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpoints_7_0.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpoints_7_0.java index e2d7c2d325f..f0972730afd 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpoints_7_0.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpoints_7_0.java @@ -170,7 +170,7 @@ public class GDBBreakpoints_7_0 extends MIBreakpoints @Override protected void handleError() { - rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, null)); + rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, getStatus().getException())); rm.done(); } }); diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpoints_7_2.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpoints_7_2.java index 00ba14ce9d2..1f26f31516b 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpoints_7_2.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpoints_7_2.java @@ -250,7 +250,7 @@ public class GDBBreakpoints_7_2 extends GDBBreakpoints_7_0 @Override protected void handleError() { - drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, null)); + drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, getStatus().getException())); drm.done(); } }); diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java index 3b646900305..84be847ce2a 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java @@ -688,7 +688,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I @Override protected void handleError() { - rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, null)); + rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, getStatus().getException())); rm.done(); } }); @@ -783,7 +783,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I @Override protected void handleError() { - drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, WATCHPOINT_INSERTION_FAILURE, null)); + drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, WATCHPOINT_INSERTION_FAILURE, getStatus().getException())); drm.done(); } }; @@ -858,7 +858,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I @Override protected void handleError() { - rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, CATCHPOINT_INSERTION_FAILURE, null)); + rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, CATCHPOINT_INSERTION_FAILURE, getStatus().getException())); rm.done(); } }); diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java index 6da28e458d3..849e793a2b5 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java @@ -658,7 +658,17 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo @Override protected void handleError() { - String description = MessageFormat.format(Messages.Breakpoint_attribute_problem, new Object[] { Messages.Breakpoint_installation_failed }); + String detailedMessage; + if (getStatus().getException() != null && + getStatus().getException().getMessage() != null) { + detailedMessage = getStatus().getException().getMessage(); + } else { + detailedMessage = getStatus().getMessage(); + } + String description = (detailedMessage == null) ? + Messages.Breakpoint_attribute_problem : + MessageFormat.format(Messages.Breakpoint_attribute_detailed_problem, new Object[] { detailedMessage}); + addBreakpointProblemMarker(breakpoint, description, IMarker.SEVERITY_WARNING); installRM.done(); } diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/Messages.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/Messages.java index 68a8b1f871e..2eed408eb77 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/Messages.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/Messages.java @@ -18,6 +18,7 @@ import org.eclipse.osgi.util.NLS; * @since 3.0 */ class Messages extends NLS { + public static String Breakpoint_attribute_detailed_problem; public static String Breakpoint_attribute_problem; public static String Breakpoint_installation_failed; public static String MIExpressions_NotAvailableBecauseChildOfDynamicVarobj; diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/Messages.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/Messages.properties index 9277f866fb8..62306b7f606 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/Messages.properties +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/Messages.properties @@ -10,7 +10,8 @@ # Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121) ############################################################################### -Breakpoint_attribute_problem=Breakpoint attribute problem: {0} +Breakpoint_attribute_detailed_problem=Breakpoint installation failed: {0} +Breakpoint_attribute_problem=Breakpoint installation failed Breakpoint_installation_failed=installation failed MIExpressions_NotAvailableBecauseChildOfDynamicVarobj=N/A (child of pretty-printed object)