[llvm-branch-commits] [lldb] release/22.x: [lldb] Fix SBBreakpointName::SetEnabled to propagate changes to breakpoints (#178734) (PR #179196)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Feb 2 02:22:12 PST 2026
https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/179196
Backport 8370304f1e5878c1860223239932ddd05d9ba4c8
Requested by: @da-viper
>From 83443cf8f65390f0a2ed26f24eae32b5bd4b6a14 Mon Sep 17 00:00:00 2001
From: Ebuka Ezike <yerimyah1 at gmail.com>
Date: Fri, 30 Jan 2026 10:20:46 +0000
Subject: [PATCH] [lldb] Fix SBBreakpointName::SetEnabled to propagate changes
to breakpoints (#178734)
When setting the enabled state of a breakpoint name via the API, the
change was not being propagated to breakpoints using that name.
This was inconsistent with the CLI behaviour where `breakpoint name
configure --enable/--disable` correctly updates all associated
breakpoints.
(cherry picked from commit 8370304f1e5878c1860223239932ddd05d9ba4c8)
---
lldb/source/API/SBBreakpointName.cpp | 1 +
.../breakpoint_names/TestBreakpointNames.py | 68 ++++++++++++++++++-
2 files changed, 67 insertions(+), 2 deletions(-)
diff --git a/lldb/source/API/SBBreakpointName.cpp b/lldb/source/API/SBBreakpointName.cpp
index 0b588c38d5114..cf045e87b338a 100644
--- a/lldb/source/API/SBBreakpointName.cpp
+++ b/lldb/source/API/SBBreakpointName.cpp
@@ -213,6 +213,7 @@ void SBBreakpointName::SetEnabled(bool enable) {
m_impl_up->GetTarget()->GetAPIMutex());
bp_name->GetOptions().SetEnabled(enable);
+ UpdateName(*bp_name);
}
void SBBreakpointName::UpdateName(BreakpointName &bp_name) {
diff --git a/lldb/test/API/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py b/lldb/test/API/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py
index 1d457415262be..33aa9877c8e59 100644
--- a/lldb/test/API/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py
+++ b/lldb/test/API/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py
@@ -2,11 +2,10 @@
Test breakpoint names.
"""
-
import os
import lldb
from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
+from lldbsuite.test.lldbtest import TestBase, VALID_BREAKPOINT, VALID_TARGET
from lldbsuite.test import lldbutil
@@ -51,6 +50,14 @@ def test_configuring_permissions_cli(self):
self.setup_target()
self.do_check_configuring_permissions_cli()
+ def test_breakpointname_enabled(self):
+ """Use Commands and Python APIs to test that enabling and disabling a
+ breakpoint name is propagated to all breakpoints with that name.
+ """
+ self.build()
+ self.setup_target()
+ self.do_check_breakpointname_enabled()
+
def setup_target(self):
exe = self.getBuildArtifact("a.out")
@@ -474,3 +481,60 @@ def do_check_configuring_permissions_cli(self):
bp_name.IsValid(), "Didn't make a breakpoint name we could find."
)
self.check_permission_results(bp_name)
+
+ def do_check_breakpointname_enabled(self):
+ target: lldb.SBTarget = self.target
+ self.assertTrue(target.IsValid(), "Target name must be valid.")
+ bp_name: lldb.SBBreakpointName = lldb.SBBreakpointName(
+ target, self.bp_name_string
+ )
+ self.assertTrue(bp_name.IsValid(), "Breakpoint name must be valid.")
+
+ # Create two function breakpoints a and b.
+ a_breakpoint: lldb.SBBreakpoint = target.BreakpointCreateByName("a")
+ self.assertTrue(a_breakpoint and a_breakpoint.IsValid(), VALID_BREAKPOINT)
+ self.assertEqual(a_breakpoint.GetNumLocations(), 1)
+ self.assertTrue(a_breakpoint.IsEnabled())
+ self.assertTrue(a_breakpoint.AddNameWithErrorHandling(self.bp_name_string))
+
+ b_breakpoint = target.BreakpointCreateByName("b")
+ self.assertTrue(b_breakpoint and b_breakpoint.IsValid(), VALID_BREAKPOINT)
+ self.assertEqual(b_breakpoint.GetNumLocations(), 1)
+ self.assertTrue(b_breakpoint.IsEnabled())
+ self.assertTrue(b_breakpoint.AddNameWithErrorHandling(self.bp_name_string))
+
+ # enabled and disable the function breakpoints with the breakpoint name.
+ # With API.
+ bp_name.SetEnabled(False)
+ self.assertFalse(bp_name.IsEnabled())
+ self.assertFalse(a_breakpoint.IsEnabled())
+ self.assertFalse(b_breakpoint.IsEnabled())
+ bp_name.SetEnabled(True)
+ self.assertTrue(a_breakpoint.IsEnabled())
+ self.assertTrue(b_breakpoint.IsEnabled())
+ self.assertTrue(bp_name.IsEnabled())
+
+ # With cli.
+ self.runCmd(f"breakpoint name configure {self.bp_name_string} --disable")
+ self.assertFalse(bp_name.IsEnabled())
+ self.assertFalse(a_breakpoint.IsEnabled())
+ self.assertFalse(b_breakpoint.IsEnabled())
+ self.runCmd(f"breakpoint name configure {self.bp_name_string} --enable")
+ self.assertTrue(a_breakpoint.IsEnabled())
+ self.assertTrue(b_breakpoint.IsEnabled())
+ self.assertTrue(bp_name.IsEnabled())
+
+ # Disabling all the Breakpoints in a BreakpointName
+ # does not disable the BreakpointName.
+ a_breakpoint.SetEnabled(False)
+ b_breakpoint.SetEnabled(False)
+ self.assertFalse(a_breakpoint.IsEnabled())
+ self.assertFalse(b_breakpoint.IsEnabled())
+ self.assertTrue(bp_name.IsEnabled())
+
+ # BreakpointName should enable all disabled breakpoints with the name.
+ b_breakpoint.SetEnabled(True)
+ bp_name.SetEnabled(True)
+ self.assertTrue(a_breakpoint.IsEnabled())
+ self.assertTrue(b_breakpoint.IsEnabled())
+ self.assertTrue(bp_name.IsEnabled())
More information about the llvm-branch-commits
mailing list