[Lldb-commits] [lldb] Reapply PR/87550 (again) (PR #95571)
Vy Nguyen via lldb-commits
lldb-commits at lists.llvm.org
Fri Jun 21 06:15:23 PDT 2024
================
@@ -65,16 +58,67 @@ DAP::DAP()
DAP::~DAP() = default;
+void DAP::PopulateExceptionBreakpoints() {
+ llvm::call_once(initExceptionBreakpoints, [this]() {
+ exception_breakpoints = std::vector<ExceptionBreakpoint> {};
+
+ if (lldb::SBDebugger::SupportsLanguage(lldb::eLanguageTypeC_plus_plus)) {
+ exception_breakpoints->emplace_back("cpp_catch", "C++ Catch",
+ lldb::eLanguageTypeC_plus_plus);
+ exception_breakpoints->emplace_back("cpp_throw", "C++ Throw",
+ lldb::eLanguageTypeC_plus_plus);
+ }
+ if (lldb::SBDebugger::SupportsLanguage(lldb::eLanguageTypeObjC)) {
+ exception_breakpoints->emplace_back("objc_catch", "Objective-C Catch",
+ lldb::eLanguageTypeObjC);
+ exception_breakpoints->emplace_back("objc_throw", "Objective-C Throw",
+ lldb::eLanguageTypeObjC);
+ }
+ if (lldb::SBDebugger::SupportsLanguage(lldb::eLanguageTypeSwift)) {
+ exception_breakpoints->emplace_back("swift_catch", "Swift Catch",
+ lldb::eLanguageTypeSwift);
+ exception_breakpoints->emplace_back("swift_throw", "Swift Throw",
+ lldb::eLanguageTypeSwift);
+ }
+ assert(exception_breakpoints.has_value() && "should have been initted");
+ assert(!exception_breakpoints->empty() && "should not be empty");
----------------
oontvoo wrote:
The `exceptions_breakpoints` *could* be empty if for some reason all of the if-condition above returns false. That would be unexpected and I think it's easier to catch the bug right here rather than later
https://github.com/llvm/llvm-project/pull/95571
More information about the lldb-commits
mailing list