diff options
author | Eugene Leviant <evgeny.leviant@gmail.com> | 2016-02-08 10:04:51 +0000 |
---|---|---|
committer | Eugene Leviant <evgeny.leviant@gmail.com> | 2016-02-08 10:04:51 +0000 |
commit | ed203da5586487b8eda9be49064c2235ba3fd112 (patch) | |
tree | b7e6e72be9e3e52ac85d1bdb5703c2e815136a23 | |
parent | 22a2a7fec11c80ce76857734521badb9c553cfff (diff) | |
download | bcm5719-llvm-ed203da5586487b8eda9be49064c2235ba3fd112.tar.gz bcm5719-llvm-ed203da5586487b8eda9be49064c2235ba3fd112.zip |
Show real error message in -data-evaluate-expression
llvm-svn: 260082
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiVar.py | 2 | ||||
-rw-r--r-- | lldb/tools/lldb-mi/MICmdCmdData.cpp | 9 | ||||
-rw-r--r-- | lldb/tools/lldb-mi/MICmdCmdData.h | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiVar.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiVar.py index 9faf2f6745d..1b7b048dcd6 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiVar.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiVar.py @@ -38,7 +38,7 @@ class MiVarTestCase(lldbmi_testcase.MiTestCaseBase): self.runCmd("-var-create var1 * undef") self.expect("\^error,msg=\"error: error: use of undeclared identifier \'undef\'\\\\nerror: 1 errors parsing expression\\\\n\"") self.runCmd("-data-evaluate-expression undef") - self.expect("\^error,msg=\"Could not evaluate expression\"") + self.expect("\^error,msg=\"error: use of undeclared identifier \'undef\'\\\\nerror: 1 errors parsing expression\\\\n\"") # Print global "g_MyVar", modify, delete and create again self.runCmd("-data-evaluate-expression g_MyVar") diff --git a/lldb/tools/lldb-mi/MICmdCmdData.cpp b/lldb/tools/lldb-mi/MICmdCmdData.cpp index 0e0cf12b008..a46fb5563ce 100644 --- a/lldb/tools/lldb-mi/MICmdCmdData.cpp +++ b/lldb/tools/lldb-mi/MICmdCmdData.cpp @@ -117,7 +117,8 @@ CMICmdCmdDataEvaluateExpression::Execute() lldb::SBFrame frame = thread.GetSelectedFrame(); lldb::SBValue value = frame.EvaluateExpression(rExpression.c_str()); - if (!value.IsValid() || value.GetError().Fail()) + m_Error = value.GetError(); + if (!value.IsValid() || m_Error.Fail()) value = frame.FindVariable(rExpression.c_str()); const CMICmnLLDBUtilSBValue utilValue(value, true); if (!utilValue.IsValid() || utilValue.IsValueUnknown()) @@ -177,8 +178,10 @@ CMICmdCmdDataEvaluateExpression::Acknowledge() m_miResultRecord = miRecordResult; return MIstatus::success; } - - const CMICmnMIValueConst miValueConst("Could not evaluate expression"); + CMIUtilString mi_error_msg = "Could not evaluate expression"; + if (const char* err_msg = m_Error.GetCString()) + mi_error_msg = err_msg; + const CMICmnMIValueConst miValueConst(mi_error_msg.Escape(true)); const CMICmnMIValueResult miValueResult("msg", miValueConst); const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, miValueResult); m_miResultRecord = miRecordResult; diff --git a/lldb/tools/lldb-mi/MICmdCmdData.h b/lldb/tools/lldb-mi/MICmdCmdData.h index 028c71387f3..a67fd6beaf7 100644 --- a/lldb/tools/lldb-mi/MICmdCmdData.h +++ b/lldb/tools/lldb-mi/MICmdCmdData.h @@ -32,6 +32,7 @@ // Third party headers: #include "lldb/API/SBCommandReturnObject.h" +#include "lldb/API/SBError.h" // In-house headers: #include "MICmdBase.h" @@ -71,6 +72,7 @@ class CMICmdCmdDataEvaluateExpression : public CMICmdBase private: bool m_bExpressionValid; // True = yes is valid, false = not valid bool m_bEvaluatedExpression; // True = yes is expression evaluated, false = failed + lldb::SBError m_Error; // Error object, which is examined when m_bEvaluatedExpression is false CMIUtilString m_strValue; CMICmnMIValueTuple m_miValueTuple; bool m_bFoundInvalidChar; // True = yes found unexpected character in the expression, false = all ok |