================ @@ -9,127 +9,69 @@ #include "DAP.h" #include "EventHelper.h" #include "JSONUtils.h" +#include "Protocol/ProtocolRequests.h" #include "RequestHandler.h" +#include "llvm/Support/Error.h" #include "llvm/Support/FileSystem.h" +using namespace llvm; +using namespace lldb_dap::protocol; + namespace lldb_dap { -// "LaunchRequest": { -// "allOf": [ { "$ref": "#/definitions/Request" }, { -// "type": "object", -// "description": "Launch request; value of command field is 'launch'.", -// "properties": { -// "command": { -// "type": "string", -// "enum": [ "launch" ] -// }, -// "arguments": { -// "$ref": "#/definitions/LaunchRequestArguments" -// } -// }, -// "required": [ "command", "arguments" ] -// }] -// }, -// "LaunchRequestArguments": { -// "type": "object", -// "description": "Arguments for 'launch' request.", -// "properties": { -// "noDebug": { -// "type": "boolean", -// "description": "If noDebug is true the launch request should launch -// the program without enabling debugging." -// } -// } -// }, -// "LaunchResponse": { -// "allOf": [ { "$ref": "#/definitions/Response" }, { -// "type": "object", -// "description": "Response to 'launch' request. This is just an -// acknowledgement, so no body field is required." -// }] -// } -void LaunchRequestHandler::operator()(const llvm::json::Object &request) const { - dap.is_attach = false; - dap.last_launch_or_attach_request = request; - llvm::json::Object response; - FillResponse(request, response); - const auto *arguments = request.getObject("arguments"); - dap.configuration.initCommands = GetStrings(arguments, "initCommands"); - dap.configuration.preRunCommands = GetStrings(arguments, "preRunCommands"); - dap.configuration.stopCommands = GetStrings(arguments, "stopCommands"); - dap.configuration.exitCommands = GetStrings(arguments, "exitCommands"); - dap.configuration.terminateCommands = - GetStrings(arguments, "terminateCommands"); - dap.configuration.postRunCommands = GetStrings(arguments, "postRunCommands"); - dap.stop_at_entry = GetBoolean(arguments, "stopOnEntry").value_or(false); - const llvm::StringRef debuggerRoot = - GetString(arguments, "debuggerRoot").value_or(""); - dap.configuration.enableAutoVariableSummaries = - GetBoolean(arguments, "enableAutoVariableSummaries").value_or(false); - dap.configuration.enableSyntheticChildDebugging = - GetBoolean(arguments, "enableSyntheticChildDebugging").value_or(false); - dap.configuration.displayExtendedBacktrace = - GetBoolean(arguments, "displayExtendedBacktrace").value_or(false); - dap.configuration.commandEscapePrefix = - GetString(arguments, "commandEscapePrefix").value_or("`"); - dap.SetFrameFormat(GetString(arguments, "customFrameFormat").value_or("")); - dap.SetThreadFormat(GetString(arguments, "customThreadFormat").value_or("")); +/// Launch request; value of command field is 'launch'. +Error LaunchRequestHandler::Run(const LaunchRequestArguments &arguments) const { + dap.SetConfiguration(arguments.configuration, /*is_attach=*/false); + dap.last_launch_request = arguments; + dap.stop_at_entry = arguments.stopOnEntry; + + if (!arguments.launchCommands.empty() && arguments.runInTerminal) { + return make_error<DAPError>("launchCommands and runInTerminal cannot " + "both be set, use one or the other."); + } PrintWelcomeMessage(); // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which // require the lldb-dap binary to have its working directory set to that // relative root for the .o files in order to be able to load debug info. + const std::string debuggerRoot = dap.configuration.debuggerRoot.value_or(""); if (!debuggerRoot.empty()) - llvm::sys::fs::set_current_path(debuggerRoot); + sys::fs::set_current_path(debuggerRoot); ---------------- ashgti wrote:
With bazel/blaze remote builds, when we build things for Apple platforms we use `-oso_prefix .` for the debugger paths. So setting this correctly is important for the relative paths to resolve correctly. I think there is a new `target.object-map` setting in lldb, but I don't think that exists in any version of lldb shipped with Xcode yet. https://github.com/llvm/llvm-project/pull/133624 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits