Fix a bug copying the stop hooks from the dummy target. (#129340)
We didn't also copy over the next stop hook id, which meant we would overwrite the stop hooks from the dummy target with stop hooks set after they are copied over.
This commit is contained in:
@@ -211,6 +211,7 @@ Target::~Target() {
|
||||
|
||||
void Target::PrimeFromDummyTarget(Target &target) {
|
||||
m_stop_hooks = target.m_stop_hooks;
|
||||
m_stop_hook_next_id = target.m_stop_hook_next_id;
|
||||
|
||||
for (const auto &breakpoint_sp : target.m_breakpoint_list.Breakpoints()) {
|
||||
if (breakpoint_sp->IsInternal())
|
||||
|
||||
@@ -26,10 +26,15 @@ class TestStopHooks(TestBase):
|
||||
self.step_out_test()
|
||||
|
||||
def test_stop_hooks_after_expr(self):
|
||||
"""Test that a stop hook fires when hitting a breakpoint
|
||||
that runs an expression"""
|
||||
"""Test that a stop hook fires when hitting a breakpoint that
|
||||
runs an expression"""
|
||||
self.after_expr_test()
|
||||
|
||||
def test_stop_hooks_before_and_after_creation(self):
|
||||
"""Test that if we add stop hooks in the dummy target,
|
||||
they aren't overridden by the ones set directly in the target."""
|
||||
self.before_and_after_target()
|
||||
|
||||
def step_out_test(self):
|
||||
(target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
|
||||
self, "Set a breakpoint here", self.main_source_file
|
||||
@@ -85,3 +90,19 @@ class TestStopHooks(TestBase):
|
||||
var = target.FindFirstGlobalVariable("g_var")
|
||||
self.assertTrue(var.IsValid())
|
||||
self.assertEqual(var.GetValueAsUnsigned(), 1, "Updated g_var")
|
||||
|
||||
def before_and_after_target(self):
|
||||
interp = self.dbg.GetCommandInterpreter()
|
||||
result = lldb.SBCommandReturnObject()
|
||||
interp.HandleCommand("target stop-hook add -o 'expr g_var++'", result)
|
||||
self.assertTrue(result.Succeeded(), "Set the target stop hook")
|
||||
|
||||
(target, process, thread, first_bkpt) = lldbutil.run_to_source_breakpoint(
|
||||
self, "Set a breakpoint here", self.main_source_file
|
||||
)
|
||||
|
||||
interp.HandleCommand("target stop-hook add -o 'thread backtrace'", result)
|
||||
self.assertTrue(result.Succeeded(), "Set the target stop hook")
|
||||
self.expect(
|
||||
"target stop-hook list", substrs=["expr g_var++", "thread backtrace"]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user