[Lldb-commits] [lldb] Add a breakpoint override resolver feature to lldb (PR #195392)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Mon May 4 20:24:47 PDT 2026
================
@@ -998,6 +999,88 @@ class Target : public std::enable_shared_from_this<Target>,
/// Resets the hit count of all breakpoints.
void ResetBreakpointHitCounts();
+ // This callout implements the "Resolver Override". When we have determined
+ // the Resolver for a given breakpoint, we pass each of the registered
+ // overrides the "natural" resolver, and then we will use whatever resolver
+ // we get back from it if it is non-null.
+ // We keep a list of overrides ordered by ID - and we search through the list
+ // by ID order, and the first override that returns a non-null Resolver will
+ // be the one we use. If no overrides return an override resolver, we'll use
+ // the original one.
+
+ // This is the abstract version of the override. Particular implementations
+ // e.g. the scripted
+ class BreakpointResolverOverride {
+ public:
+ BreakpointResolverOverride(Target &target, const std::string &description)
+ : m_target(target), m_desc(description) {}
+
+ virtual BreakpointResolverOverride *CopyIntoNewTarget(Target &target) = 0;
+
+ virtual ~BreakpointResolverOverride() {}
+ virtual lldb::BreakpointResolverSP
+ CheckForOverride(Target &target, lldb::BreakpointResolverSP initial_sp) {
+ return {};
+ }
+ const std::string &GetDescription() { return m_desc; }
+
+ protected:
+ Target &m_target;
+ std::string m_desc;
+ };
+
+ uint64_t AddBreakpointResolverOverride(BreakpointResolverOverride *override) {
+ static uint64_t g_override_id = 1;
+ uint64_t id_used = g_override_id;
----------------
JDevlieghere wrote:
Instead of an ever increasing id can we have a `m_next_override_id` per target? Or do these ever cross targets?
https://github.com/llvm/llvm-project/pull/195392
More information about the lldb-commits
mailing list