Test that we can listen to modules loaded events.
"""
-
-
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
import six
-
class ListenToModuleLoadedEvents (TestBase):
mydir = TestBase.compute_mydir(__file__)
+ NO_DEBUG_INFO_TESTCASE = True
+
+ def test_clearing_listener(self):
+ """Make sure we also clear listerers from the hook up for event type manager"""
+ self.build()
+
+ my_first_listener = lldb.SBListener("bonus_listener")
+ my_listener = lldb.SBListener("test_listener")
+ my_third_listener = lldb.SBListener("extra_bonus_listener")
- def test_receiving_breakpoint_added(self):
+ my_listener.StartListeningForEventClass(
+ self.dbg,
+ lldb.SBTarget.GetBroadcasterClassName(),
+ lldb.SBTarget.eBroadcastBitBreakpointChanged)
+ my_first_listener.StartListeningForEventClass(
+ self.dbg,
+ lldb.SBTarget.GetBroadcasterClassName(),
+ lldb.SBTarget.eBroadcastBitWatchpointChanged)
+ my_third_listener.StartListeningForEventClass(
+ self.dbg,
+ lldb.SBTarget.GetBroadcasterClassName(),
+ lldb.SBTarget.eBroadcastBitModulesUnloaded)
+
+ exe = self.getBuildArtifact("a.out")
+
+ my_listener.Clear()
+
+ target = self.dbg.CreateTarget(exe)
+
+ bkpt = target.BreakpointCreateByName("main")
+
+ event = lldb.SBEvent()
+ my_listener.WaitForEvent(1, event)
+ self.assertTrue(not event.IsValid(), "We don't get events we aren't listening to.")
+
+ def test_receiving_breakpoint_added_from_debugger(self):
"""Test that we get breakpoint added events, waiting on event classes on the debugger"""
self.build()
"It is our breakpoint.")
# Now make sure if we stop listening for events we don't get them:
-
my_listener.StopListeningForEventClass(
self.dbg,
lldb.SBTarget.GetBroadcasterClassName(),
my_listener.StopListeningForEvents(
target.GetBroadcaster(),
lldb.SBTarget.eBroadcastBitBreakpointChanged)
-
+
bkpt2 = target.BreakpointCreateByName("main")
my_listener.WaitForEvent(1, event)
+ self.assertTrue(not event.IsValid(), "We don't get events we aren't listening to.")
+
+ def test_recieving_breakpoint_added_from_target(self):
+ """Test that we get breakpoint added events, waiting on event classes on the debugger"""
+ self.build()
+
+ my_listener = lldb.SBListener("test_listener")
+ my_listener.StartListeningForEventClass(
+ self.dbg,
+ lldb.SBTarget.GetBroadcasterClassName(),
+ lldb.SBTarget.eBroadcastBitBreakpointChanged)
+
+ exe = self.getBuildArtifact("a.out")
+
+ target = self.dbg.CreateTarget(exe)
+ result = target.GetBroadcaster().AddListener(my_listener,
+ lldb.SBTarget.eBroadcastBitBreakpointChanged)
+ self.assertEqual(result, lldb.SBTarget.eBroadcastBitBreakpointChanged,"Got our bit")
+
+ bkpt = target.BreakpointCreateByName("main")
+
+ event = lldb.SBEvent()
+ my_listener.WaitForEvent(1, event)
+
+ self.assertTrue(event.IsValid(), "Got a valid event.")
+ self.assertTrue(
+ lldb.SBBreakpoint.EventIsBreakpointEvent(event),
+ "It is a breakpoint event.")
+ self.assertTrue(lldb.SBBreakpoint.GetBreakpointEventTypeFromEvent(
+ event) == lldb.eBreakpointEventTypeAdded, "It is a breakpoint added event.")
self.assertTrue(
- not event.IsValid(),
- "We don't get events we aren't listening to.")
+ bkpt == lldb.SBBreakpoint.GetBreakpointFromEvent(event),
+ "It is our breakpoint.")
+
+ # Now make sure if we stop listening for events we don't get them:
+ target.GetBroadcaster().RemoveListener(my_listener)
+
+ bkpt2 = target.BreakpointCreateByName("main")
+ my_listener.WaitForEvent(1, event)
+ self.assertTrue(not event.IsValid(), "We don't get events we aren't listening to.")
+