[Lldb-commits] [lldb] [lldb][Module] Only log SDK search error once per debugger session (PR #171820)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Thu Dec 11 06:01:26 PST 2025
https://github.com/Michael137 updated https://github.com/llvm/llvm-project/pull/171820
>From fcbe4c42381cf6b895bfcf484af82f79d9f1d75f Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Thu, 11 Dec 2025 12:42:10 +0000
Subject: [PATCH] [lldb][Module] Only log SDK search error once per debugger
session
---
lldb/include/lldb/Core/Module.h | 4 ++++
lldb/source/Core/Module.cpp | 11 ++++++++++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/lldb/include/lldb/Core/Module.h b/lldb/include/lldb/Core/Module.h
index 40ce23e3d2ffb..0c51808ed5073 100644
--- a/lldb/include/lldb/Core/Module.h
+++ b/lldb/include/lldb/Core/Module.h
@@ -1094,6 +1094,9 @@ class Module : public std::enable_shared_from_this<Module>,
m_shown_diagnostics;
std::recursive_mutex m_diagnostic_mutex;
+ llvm::StringMap<std::unique_ptr<std::once_flag>> m_shown_sdk_errors;
+ std::recursive_mutex m_shown_sdk_errors_mutex;
+
void SymbolIndicesToSymbolContextList(Symtab *symtab,
std::vector<uint32_t> &symbol_indexes,
SymbolContextList &sc_list);
@@ -1121,6 +1124,7 @@ class Module : public std::enable_shared_from_this<Module>,
void ReportError(const llvm::formatv_object_base &payload);
void ReportErrorIfModifyDetected(const llvm::formatv_object_base &payload);
std::once_flag *GetDiagnosticOnceFlag(llvm::StringRef msg);
+ std::once_flag *GetSDKErrorOnceFlag(llvm::StringRef msg);
};
} // namespace lldb_private
diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp
index da2c188899f03..8527001abd678 100644
--- a/lldb/source/Core/Module.cpp
+++ b/lldb/source/Core/Module.cpp
@@ -1117,6 +1117,13 @@ void Module::ReportErrorIfModifyDetected(
}
}
+std::once_flag *Module::GetSDKErrorOnceFlag(llvm::StringRef msg) {
+ std::lock_guard<std::recursive_mutex> guard(m_shown_sdk_errors_mutex);
+ auto [it, _] =
+ m_shown_sdk_errors.try_emplace(msg, std::make_unique<std::once_flag>());
+ return it->getValue().get();
+}
+
std::once_flag *Module::GetDiagnosticOnceFlag(llvm::StringRef msg) {
std::lock_guard<std::recursive_mutex> guard(m_diagnostic_mutex);
auto &once_ptr = m_shown_diagnostics[llvm::stable_hash_name(msg)];
@@ -1569,7 +1576,9 @@ void Module::RegisterXcodeSDK(llvm::StringRef sdk_name,
if (!sdk_path_or_err) {
Debugger::ReportError("Error while searching for Xcode SDK: " +
- toString(sdk_path_or_err.takeError()));
+ toString(sdk_path_or_err.takeError()),
+ /*debugger_id=*/std::nullopt,
+ /*once=*/GetSDKErrorOnceFlag(sdk_name));
return;
}
More information about the lldb-commits
mailing list