[Lldb-commits] [lldb] r334215 - [lldb-mi] Re-implement MI -exec-next command.

Alexander Polyakov via lldb-commits lldb-commits at lists.llvm.org
Thu Jun 7 12:09:02 PDT 2018


Author: apolyakov
Date: Thu Jun  7 12:09:01 2018
New Revision: 334215

URL: http://llvm.org/viewvc/llvm-project?rev=334215&view=rev
Log:
[lldb-mi] Re-implement MI -exec-next command.

Summary: Now -exec-next command uses SB API for stepping over.

Reviewers: aprantl, clayborg, stella.stamenova, labath

Reviewed By: aprantl, clayborg, labath

Subscribers: labath, ki.stfu, lldb-commits

Differential Revision: https://reviews.llvm.org/D47797

Added:
    lldb/trunk/lit/tools/lldb-mi/exec/exec-next.test
    lldb/trunk/lit/tools/lldb-mi/exec/inputs/
    lldb/trunk/lit/tools/lldb-mi/exec/inputs/main.c
Modified:
    lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp

Added: lldb/trunk/lit/tools/lldb-mi/exec/exec-next.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/tools/lldb-mi/exec/exec-next.test?rev=334215&view=auto
==============================================================================
--- lldb/trunk/lit/tools/lldb-mi/exec/exec-next.test (added)
+++ lldb/trunk/lit/tools/lldb-mi/exec/exec-next.test Thu Jun  7 12:09:01 2018
@@ -0,0 +1,30 @@
+# XFAIL: windows
+# -> llvm.org/pr24452
+#
+# RUN: %cc -o %t %p/inputs/main.c -g
+# RUN: %lldbmi %t < %s | FileCheck %s
+
+# Test lldb-mi -exec-next 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-next --thread 0
+# Check that exec-next can process the case of invalid thread ID.
+# CHECK: ^error,msg="Command 'exec-next'. Thread ID invalid"
+
+-exec-next --thread 1
+# CHECK: ^running
+# CHECK: *stopped,reason="end-stepping-range"
+
+-exec-next
+# Check that exec-next can step over in a selected thread.
+# CHECK: ^running
+# CHECK: *stopped,reason="end-stepping-range"

Added: lldb/trunk/lit/tools/lldb-mi/exec/inputs/main.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/tools/lldb-mi/exec/inputs/main.c?rev=334215&view=auto
==============================================================================
--- lldb/trunk/lit/tools/lldb-mi/exec/inputs/main.c (added)
+++ lldb/trunk/lit/tools/lldb-mi/exec/inputs/main.c Thu Jun  7 12:09:01 2018
@@ -0,0 +1,4 @@
+int main(void) {
+  int x = 0;
+  return x;
+}

Modified: lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp?rev=334215&r1=334214&r2=334215&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp (original)
+++ lldb/trunk/tools/lldb-mi/MICmdCmdExec.cpp Thu Jun  7 12:09:01 2018
@@ -22,6 +22,7 @@
 #include "lldb/API/SBCommandInterpreter.h"
 #include "lldb/API/SBProcess.h"
 #include "lldb/API/SBStream.h"
+#include "lldb/API/SBThread.h"
 #include "lldb/lldb-enumerations.h"
 
 // In-house headers:
@@ -378,12 +379,17 @@ bool CMICmdCmdExecNext::Execute() {
 
   CMICmnLLDBDebugSessionInfo &rSessionInfo(
       CMICmnLLDBDebugSessionInfo::Instance());
-  lldb::SBDebugger &rDebugger = rSessionInfo.GetDebugger();
-  CMIUtilString strCmd("thread step-over");
-  if (nThreadId != UINT64_MAX)
-    strCmd += CMIUtilString::Format(" %llu", nThreadId);
-  rDebugger.GetCommandInterpreter().HandleCommand(strCmd.c_str(), m_lldbResult,
-                                                  false);
+
+  if (nThreadId != UINT64_MAX) {
+    lldb::SBThread sbThread = rSessionInfo.GetProcess().GetThreadByIndexID(nThreadId);
+    if (!sbThread.IsValid()) {
+      SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_THREAD_INVALID),
+                                     m_cmdData.strMiCmd.c_str(),
+                                     m_constStrArgThread.c_str()));
+      return MIstatus::failure;
+    }
+    sbThread.StepOver();
+  } else rSessionInfo.GetProcess().GetSelectedThread().StepOver();
 
   return MIstatus::success;
 }




More information about the lldb-commits mailing list