diff --git a/lldb/tools/lldb-dap/DAP.cpp b/lldb/tools/lldb-dap/DAP.cpp index e45f9bf359e5b..10d2d5d79a74b 100644 --- a/lldb/tools/lldb-dap/DAP.cpp +++ b/lldb/tools/lldb-dap/DAP.cpp @@ -548,7 +548,7 @@ bool DAP::RunLLDBCommands(llvm::StringRef prefix, llvm::ArrayRef commands) { bool required_command_failed = false; std::string output = - ::RunLLDBCommands(prefix, commands, required_command_failed); + ::RunLLDBCommands(debugger, prefix, commands, required_command_failed); SendOutput(OutputType::Console, output); return !required_command_failed; } diff --git a/lldb/tools/lldb-dap/LLDBUtils.cpp b/lldb/tools/lldb-dap/LLDBUtils.cpp index 2ffcba7dff4f2..48b63b59e0e3f 100644 --- a/lldb/tools/lldb-dap/LLDBUtils.cpp +++ b/lldb/tools/lldb-dap/LLDBUtils.cpp @@ -15,7 +15,7 @@ namespace lldb_dap { -bool RunLLDBCommands(llvm::StringRef prefix, +bool RunLLDBCommands(lldb::SBDebugger &debugger, llvm::StringRef prefix, const llvm::ArrayRef &commands, llvm::raw_ostream &strm, bool parse_command_directives) { if (commands.empty()) @@ -23,7 +23,7 @@ bool RunLLDBCommands(llvm::StringRef prefix, bool did_print_prefix = false; - lldb::SBCommandInterpreter interp = g_dap.debugger.GetCommandInterpreter(); + lldb::SBCommandInterpreter interp = debugger.GetCommandInterpreter(); for (llvm::StringRef command : commands) { lldb::SBCommandReturnObject result; bool quiet_on_success = false; @@ -78,23 +78,23 @@ bool RunLLDBCommands(llvm::StringRef prefix, return true; } -std::string RunLLDBCommands(llvm::StringRef prefix, +std::string RunLLDBCommands(lldb::SBDebugger &debugger, llvm::StringRef prefix, const llvm::ArrayRef &commands, bool &required_command_failed, bool parse_command_directives) { required_command_failed = false; std::string s; llvm::raw_string_ostream strm(s); - required_command_failed = - !RunLLDBCommands(prefix, commands, strm, parse_command_directives); + required_command_failed = !RunLLDBCommands(debugger, prefix, commands, strm, + parse_command_directives); return s; } std::string -RunLLDBCommandsVerbatim(llvm::StringRef prefix, +RunLLDBCommandsVerbatim(lldb::SBDebugger &debugger, llvm::StringRef prefix, const llvm::ArrayRef &commands) { bool required_command_failed = false; - return RunLLDBCommands(prefix, commands, required_command_failed, + return RunLLDBCommands(debugger, prefix, commands, required_command_failed, /*parse_command_directives=*/false); } diff --git a/lldb/tools/lldb-dap/LLDBUtils.h b/lldb/tools/lldb-dap/LLDBUtils.h index d5072d19029a1..a9e13bb3678da 100644 --- a/lldb/tools/lldb-dap/LLDBUtils.h +++ b/lldb/tools/lldb-dap/LLDBUtils.h @@ -10,6 +10,7 @@ #define LLDB_TOOLS_LLDB_DAP_LLDBUTILS_H #include "DAPForward.h" +#include "lldb/API/SBDebugger.h" #include "lldb/API/SBEnvironment.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" @@ -30,6 +31,9 @@ namespace lldb_dap { /// emitted regardless, and \b false is returned without executing the /// remaining commands. /// +/// \param[in] debugger +/// The debugger that will execute the lldb commands. +/// /// \param[in] prefix /// A string that will be printed into \a strm prior to emitting /// the prompt + command and command output. Can be NULL. @@ -48,7 +52,7 @@ namespace lldb_dap { /// \return /// \b true, unless a command prefixed with \b ! fails and parsing of /// command directives is enabled. -bool RunLLDBCommands(llvm::StringRef prefix, +bool RunLLDBCommands(lldb::SBDebugger &debugger, llvm::StringRef prefix, const llvm::ArrayRef &commands, llvm::raw_ostream &strm, bool parse_command_directives); @@ -57,6 +61,9 @@ bool RunLLDBCommands(llvm::StringRef prefix, /// All output from every command, including the prompt + the command /// is returned in the std::string return value. /// +/// \param[in] debugger +/// The debugger that will execute the lldb commands. +/// /// \param[in] prefix /// A string that will be printed into \a strm prior to emitting /// the prompt + command and command output. Can be NULL. @@ -75,14 +82,14 @@ bool RunLLDBCommands(llvm::StringRef prefix, /// \return /// A std::string that contains the prefix and all commands and /// command output. -std::string RunLLDBCommands(llvm::StringRef prefix, +std::string RunLLDBCommands(lldb::SBDebugger &debugger, llvm::StringRef prefix, const llvm::ArrayRef &commands, bool &required_command_failed, bool parse_command_directives = true); /// Similar to the method above, but without parsing command directives. std::string -RunLLDBCommandsVerbatim(llvm::StringRef prefix, +RunLLDBCommandsVerbatim(lldb::SBDebugger &debugger, llvm::StringRef prefix, const llvm::ArrayRef &commands); /// Check if a thread has a stop reason. diff --git a/lldb/tools/lldb-dap/lldb-dap.cpp b/lldb/tools/lldb-dap/lldb-dap.cpp index c50e7abb32b47..180923f1f145a 100644 --- a/lldb/tools/lldb-dap/lldb-dap.cpp +++ b/lldb/tools/lldb-dap/lldb-dap.cpp @@ -1615,8 +1615,8 @@ void request_evaluate(const llvm::json::Object &request) { if (frame.IsValid()) { g_dap.focus_tid = frame.GetThread().GetThreadID(); } - auto result = - RunLLDBCommandsVerbatim(llvm::StringRef(), {std::string(expression)}); + auto result = RunLLDBCommandsVerbatim(g_dap.debugger, llvm::StringRef(), + {std::string(expression)}); EmplaceSafeString(body, "result", result); body.try_emplace("variablesReference", (int64_t)0); } else {