[Lldb-commits] [lldb] r334350 - [lldb, lldb-mi] Re-implement MI -exec-continue command.
Alexander Polyakov via lldb-commits
lldb-commits at lists.llvm.org
Sat Jun 9 08:11:37 PDT 2018
Author: apolyakov
Date: Sat Jun 9 08:11:37 2018
New Revision: 334350
URL: http://llvm.org/viewvc/llvm-project?rev=334350&view=rev
Log:
[lldb, lldb-mi] Re-implement MI -exec-continue command.
Summary: Now -exec-continue command uses SB API to resume target's process.
Reviewers: aprantl, clayborg, labath
Reviewed By: clayborg
Subscribers: apolyakov, labath, ki.stfu, llvm-commits, lldb-commits
Differential Revision: https://reviews.llvm.org/D47415
Added:
lldb/trunk/lit/tools/lldb-mi/exec/exec-continue.test
Modified:
lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp
lldb/trunk/tools/lldb-mi/MICmdCmdExec.h
Added: lldb/trunk/lit/tools/lldb-mi/exec/exec-continue.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/tools/lldb-mi/exec/exec-continue.test?rev=334350&view=auto
==============================================================================
--- lldb/trunk/lit/tools/lldb-mi/exec/exec-continue.test (added)
+++ lldb/trunk/lit/tools/lldb-mi/exec/exec-continue.test Sat Jun 9 08:11:37 2018
@@ -0,0 +1,20 @@
+# XFAIL: windows
+# -> llvm.org/pr24452
+#
+# RUN: %cc -o %t %p/inputs/main.c -g
+# RUN: %lldbmi %t < %s | FileCheck %s
+
+# Test lldb-mi -exec-continue command.
+
+# Check that we have a valid target created via '%lldbmi %t'.
+# CHECK: ^done
+
+-break-insert main
+# CHECK: ^done,bkpt={number="1"
+
+-exec-run
+# CHECK: ^running
+# CHECK: *stopped,reason="breakpoint-hit"
+
+-exec-continue
+# CHECK: ^running
Modified: lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp?rev=334350&r1=334349&r2=334350&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp (original)
+++ lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp Sat Jun 9 08:11:37 2018
@@ -233,15 +233,10 @@ CMICmdCmdExecContinue::~CMICmdCmdExecCon
// Throws: None.
//--
bool CMICmdCmdExecContinue::Execute() {
- const char *pCmd = "continue";
- CMICmnLLDBDebugSessionInfo &rSessionInfo(
- CMICmnLLDBDebugSessionInfo::Instance());
- const lldb::ReturnStatus rtn =
- rSessionInfo.GetDebugger().GetCommandInterpreter().HandleCommand(
- pCmd, m_lldbResult);
- MIunused(rtn);
-
- if (m_lldbResult.GetErrorSize() == 0) {
+ lldb::SBError error =
+ CMICmnLLDBDebugSessionInfo::Instance().GetProcess().Continue();
+
+ if (error.Success()) {
// CODETAG_DEBUG_SESSION_RUNNING_PROG_RECEIVED_SIGINT_PAUSE_PROGRAM
if (!CMIDriver::Instance().SetDriverStateRunningDebugging()) {
const CMIUtilString &rErrMsg(CMIDriver::Instance().GetErrorDescription());
@@ -250,18 +245,11 @@ bool CMICmdCmdExecContinue::Execute() {
rErrMsg.c_str()));
return MIstatus::failure;
}
- } else {
- // ToDo: Re-evaluate if this is required when application near finished as
- // this is parsing LLDB error message
- // which seems a hack and is code brittle
- const char *pLldbErr = m_lldbResult.GetError();
- const CMIUtilString strLldbMsg(CMIUtilString(pLldbErr).StripCREndOfLine());
- if (strLldbMsg == "error: Process must be launched.") {
- CMIDriver::Instance().SetExitApplicationFlag(true);
- }
+ return MIstatus::success;
}
- return MIstatus::success;
+ SetError(error.GetCString());
+ return MIstatus::failure;
}
//++
@@ -276,19 +264,9 @@ bool CMICmdCmdExecContinue::Execute() {
// Throws: None.
//--
bool CMICmdCmdExecContinue::Acknowledge() {
- if (m_lldbResult.GetErrorSize() > 0) {
- const CMICmnMIValueConst miValueConst(m_lldbResult.GetError());
- const CMICmnMIValueResult miValueResult("message", miValueConst);
- const CMICmnMIResultRecord miRecordResult(
- m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error,
- miValueResult);
- m_miResultRecord = miRecordResult;
- } else {
- const CMICmnMIResultRecord miRecordResult(
- m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Running);
- m_miResultRecord = miRecordResult;
- }
-
+ const CMICmnMIResultRecord miRecordResult(
+ m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Running);
+ m_miResultRecord = miRecordResult;
return MIstatus::success;
}
Modified: lldb/trunk/tools/lldb-mi/MICmdCmdExec.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-mi/MICmdCmdExec.h?rev=334350&r1=334349&r2=334350&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-mi/MICmdCmdExec.h (original)
+++ lldb/trunk/tools/lldb-mi/MICmdCmdExec.h Sat Jun 9 08:11:37 2018
@@ -93,8 +93,6 @@ public:
/* dtor */ ~CMICmdCmdExecContinue() override;
// Attributes:
-private:
- lldb::SBCommandReturnObject m_lldbResult;
};
//++
More information about the lldb-commits
mailing list