From 1b8aa6e744fea7e5dce4320c1bed6c4ae45642d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jialun=20Hu=20=EF=BC=88=E8=83=A1=E4=BD=B3=E4=BC=A6?= =?UTF-8?q?=EF=BC=89?= Date: Wed, 21 May 2025 22:11:27 +0800 Subject: [PATCH] [lldb-dap] Assorted small fixes for runInTerminal - CreateRunInTerminalReverseRequest is passed a StringMap by value, whose keys are owned and deallocated after return. - Target args are wrongly specified as reverse request (launcher) args. - Test case error message did not catch up with a0aa5f8. All runInTerminal tests are passing with this applied. --- .../API/tools/lldb-dap/runInTerminal/TestDAP_runInTerminal.py | 4 ++-- lldb/tools/lldb-dap/JSONUtils.cpp | 4 ++-- lldb/tools/lldb-dap/JSONUtils.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lldb/test/API/tools/lldb-dap/runInTerminal/TestDAP_runInTerminal.py b/lldb/test/API/tools/lldb-dap/runInTerminal/TestDAP_runInTerminal.py index 9aab7ca3293db..65c931210d400 100644 --- a/lldb/test/API/tools/lldb-dap/runInTerminal/TestDAP_runInTerminal.py +++ b/lldb/test/API/tools/lldb-dap/runInTerminal/TestDAP_runInTerminal.py @@ -128,8 +128,8 @@ def test_runInTerminalInvalidTarget(self): ) self.assertFalse(response["success"]) self.assertIn( - "Could not create a target for a program 'INVALIDPROGRAM': 'INVALIDPROGRAM' does not exist", - response["message"], + "'INVALIDPROGRAM' does not exist", + response["body"]["error"]["format"], ) @skipIfWindows diff --git a/lldb/tools/lldb-dap/JSONUtils.cpp b/lldb/tools/lldb-dap/JSONUtils.cpp index 714947a4d3b9c..e26fa9d2b3251 100644 --- a/lldb/tools/lldb-dap/JSONUtils.cpp +++ b/lldb/tools/lldb-dap/JSONUtils.cpp @@ -1303,7 +1303,7 @@ llvm::json::Value CreateCompileUnit(lldb::SBCompileUnit &unit) { /// https://microsoft.github.io/debug-adapter-protocol/specification#Reverse_Requests_RunInTerminal llvm::json::Object CreateRunInTerminalReverseRequest( llvm::StringRef program, const std::vector &args, - const llvm::StringMap env, llvm::StringRef cwd, + const llvm::StringMap &env, llvm::StringRef cwd, llvm::StringRef comm_file, lldb::pid_t debugger_pid) { llvm::json::Object run_in_terminal_args; // This indicates the IDE to open an embedded terminal, instead of opening @@ -1320,7 +1320,7 @@ llvm::json::Object CreateRunInTerminalReverseRequest( req_args.push_back("--launch-target"); req_args.push_back(program.str()); req_args.insert(req_args.end(), args.begin(), args.end()); - run_in_terminal_args.try_emplace("args", args); + run_in_terminal_args.try_emplace("args", req_args); if (!cwd.empty()) run_in_terminal_args.try_emplace("cwd", cwd); diff --git a/lldb/tools/lldb-dap/JSONUtils.h b/lldb/tools/lldb-dap/JSONUtils.h index 783f291338d8c..6ac9fe75387fd 100644 --- a/lldb/tools/lldb-dap/JSONUtils.h +++ b/lldb/tools/lldb-dap/JSONUtils.h @@ -530,7 +530,7 @@ llvm::json::Value CreateCompileUnit(lldb::SBCompileUnit &unit); /// Microsoft. llvm::json::Object CreateRunInTerminalReverseRequest( llvm::StringRef program, const std::vector &args, - const llvm::StringMap env, llvm::StringRef cwd, + const llvm::StringMap &env, llvm::StringRef cwd, llvm::StringRef comm_file, lldb::pid_t debugger_pid); /// Create a "Terminated" JSON object that contains statistics