diff options
Diffstat (limited to 'lldb/tools/lldb-dap/DAP.cpp')
| -rw-r--r-- | lldb/tools/lldb-dap/DAP.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lldb/tools/lldb-dap/DAP.cpp b/lldb/tools/lldb-dap/DAP.cpp index b1ad38d98389..f76656e98ca0 100644 --- a/lldb/tools/lldb-dap/DAP.cpp +++ b/lldb/tools/lldb-dap/DAP.cpp @@ -121,12 +121,13 @@ static std::string capitalize(llvm::StringRef str) { llvm::StringRef DAP::debug_adapter_path = ""; DAP::DAP(Log *log, const ReplMode default_repl_mode, - std::vector<std::string> pre_init_commands, + std::vector<std::string> pre_init_commands, bool no_lldbinit, llvm::StringRef client_name, DAPTransport &transport, MainLoop &loop) : log(log), transport(transport), broadcaster("lldb-dap"), progress_event_reporter( [&](const ProgressEvent &event) { SendJSON(event.ToJSON()); }), - repl_mode(default_repl_mode), m_client_name(client_name), m_loop(loop) { + repl_mode(default_repl_mode), no_lldbinit(no_lldbinit), + m_client_name(client_name), m_loop(loop) { configuration.preInitCommands = std::move(pre_init_commands); RegisterRequests(); } @@ -1068,6 +1069,11 @@ llvm::Error DAP::Loop() { out.Stop(); err.Stop(); StopEventHandlers(); + + // Destroy the debugger when the session ends. This will trigger the + // debugger's destroy callbacks for earlier logging and clean-ups, rather + // than waiting for the termination of the lldb-dap process. + lldb::SBDebugger::Destroy(debugger); }); while (true) { |
