mirror of
https://github.com/intel/llvm.git
synced 2026-01-19 09:31:59 +08:00
Show real error message in -data-evaluate-expression
llvm-svn: 260082
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user