summaryrefslogtreecommitdiff
path: root/lldb/tools/lldb-dap/DAP.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/tools/lldb-dap/DAP.cpp')
-rw-r--r--lldb/tools/lldb-dap/DAP.cpp10
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) {