diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBShowExitCode.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBShowExitCode.java index cc07c6a8747..ac44ec82088 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBShowExitCode.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBShowExitCode.java @@ -13,19 +13,22 @@ import org.eclipse.cdt.debug.mi.core.output.MIOutput; /** * - * -gdb-show + *-data-evaluate-expression $_exitcode + * ^done,value="10" * - * Show the current value of a GDB variable. + * Show the current value of a $_exitcode * */ -public class MIGDBShowExitCode extends MIGDBShow { +public class MIGDBShowExitCode extends MIDataEvaluateExpression { + public MIGDBShowExitCode() { - super(new String[] { "convenience", "$_exitcode" }); + super("$_exitcode"); } public MIGDBShowExitCodeInfo getMIGDBShowExitCodeInfo() throws MIException { return (MIGDBShowExitCodeInfo)getMIInfo(); } + public MIInfo getMIInfo() throws MIException { MIInfo info = null; MIOutput out = getMIOutput(); diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowExitCodeInfo.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowExitCodeInfo.java index 1fb6c5e423f..2667193e554 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowExitCodeInfo.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowExitCodeInfo.java @@ -11,44 +11,24 @@ import java.util.List; /** * GDB/MI show parsing. * (gdb) - * -gdb-show convenience $_exitcode - * ~"$_exitcode = 0" - * ~"\n" - * ^done + * -data-evaluate-expression $_exitcode + * ^done,value="10" + * (gdb) */ -public class MIGDBShowExitCodeInfo extends MIInfo { - - int code; +public class MIGDBShowExitCodeInfo extends MIDataEvaluateExpressionInfo { public MIGDBShowExitCodeInfo(MIOutput o) { super(o); - parse(); } public int getCode() { + int code = 0; + String exp = getExpression(); + try { + code = Integer.parseInt(exp); + } catch (NumberFormatException e) { + } return code; } - void parse() { - if (isDone()) { - MIOutput out = getMIOutput(); - MIOOBRecord[] oobs = out.getMIOOBRecords(); - for (int i = 0; i < oobs.length; i++) { - if (oobs[i] instanceof MIConsoleStreamOutput) { - MIStreamRecord cons = (MIStreamRecord)oobs[i]; - String str = cons.getString(); - if (str.startsWith("$_exitcode")) { - int j = str.indexOf('='); - if (j != -1) { - String sub = str.substring(j + 1).trim(); - try { - code = Integer.parseInt(sub); - } catch (NumberFormatException e) { - } - } - } - } - } - } - } }