Class SBEvent
source code
  
   
API clients can register to receive events.
For example, check out the following output:
Try wait for event...
Event description: 0x103d0bb70 Event: broadcaster = 0x1009c8410, type = 0x00000001, data = { process = 0x1009c8400 (pid = 21528), state = running}
Event data flavor: Process::ProcessEventData
Process state: running
Try wait for event...
Event description: 0x103a700a0 Event: broadcaster = 0x1009c8410, type = 0x00000001, data = { process = 0x1009c8400 (pid = 21528), state = stopped}
Event data flavor: Process::ProcessEventData
Process state: stopped
Try wait for event...
Event description: 0x103d0d4a0 Event: broadcaster = 0x1009c8410, type = 0x00000001, data = { process = 0x1009c8400 (pid = 21528), state = exited}
Event data flavor: Process::ProcessEventData
Process state: exited
Try wait for event...
timeout occurred waiting for event...
from test/python_api/event/TestEventspy:
    def do_listen_for_and_print_event(self):
        '''Create a listener and use SBEvent API to print the events received.'''
        exe = os.path.join(os.getcwd(), 'a.out')
        # Create a target by the debugger.
        target = self.dbg.CreateTarget(exe)
        self.assertTrue(target, VALID_TARGET)
        # Now create a breakpoint on main.c by name 'c'.
        breakpoint = target.BreakpointCreateByName('c', 'a.out')
        # Now launch the process, and do not stop at the entry point.
        process = target.LaunchSimple(None, None, os.getcwd())
        self.assertTrue(process.GetState() == lldb.eStateStopped,
                        PROCESS_STOPPED)
        # Get a handle on the process's broadcaster.
        broadcaster = process.GetBroadcaster()
        # Create an empty event object.
        event = lldb.SBEvent()
        # Create a listener object and register with the broadcaster.
        listener = lldb.SBListener('my listener')
        rc = broadcaster.AddListener(listener, lldb.SBProcess.eBroadcastBitStateChanged)
        self.assertTrue(rc, 'AddListener successfully retruns')
        traceOn = self.TraceOn()
        if traceOn:
            lldbutil.print_stacktraces(process)
        # Create MyListeningThread class to wait for any kind of event.
        import threading
        class MyListeningThread(threading.Thread):
            def run(self):
                count = 0
                # Let's only try at most 4 times to retrieve any kind of event.
                # After that, the thread exits.
                while not count > 3:
                    if traceOn:
                        print 'Try wait for event...'
                    if listener.WaitForEventForBroadcasterWithType(5,
                                                                   broadcaster,
                                                                   lldb.SBProcess.eBroadcastBitStateChanged,
                                                                   event):
                        if traceOn:
                            desc = lldbutil.get_description(event)
                            print 'Event description:', desc
                            print 'Event data flavor:', event.GetDataFlavor()
                            print 'Process state:', lldbutil.state_type_to_str(process.GetState())
                            print
                    else:
                        if traceOn:
                            print 'timeout occurred waiting for event...'
                    count = count + 1
                return
        # Let's start the listening thread to retrieve the events.
        my_thread = MyListeningThread()
        my_thread.start()
        # Use Python API to continue the process.  The listening thread should be
        # able to receive the state changed events.
        process.Continue()
        # Use Python API to kill the process.  The listening thread should be
        # able to receive the state changed event, too.
        process.Kill()
        # Wait until the 'MyListeningThread' terminates.
        my_thread.join()
    |  |  | 
    |  |  | 
    |  |  | 
    |  | 
        
          | __init__(self,
        *args) __init__(lldb::SBEvent self) -> SBEvent __init__(lldb::SBEvent 
      self, SBEvent rhs) -> SBEvent __init__(self, int type, str data) 
      -> SBEvent (make an event that contains a C string)
 | source code |  | 
    |  | 
        
          | __swig_destroy__(...) delete_SBEvent(SBEvent self)
 |  |  | 
    |  |  | 
    |  |  | 
    |  | 
        
          | IsValid(self) IsValid(SBEvent self) -> bool
 | source code |  | 
    |  | 
        
          | GetDataFlavor(self) GetDataFlavor(SBEvent self) -> str const *
 | source code |  | 
    |  | 
        
          | GetType(self) GetType(SBEvent self) -> uint32_t
 | source code |  | 
    |  | 
        
          | GetBroadcaster(self) GetBroadcaster(SBEvent self) -> SBBroadcaster
 | source code |  | 
    |  | 
        
          | GetBroadcasterClass(self) GetBroadcasterClass(SBEvent self) -> str const *
 | source code |  | 
    |  | 
        
          | BroadcasterMatchesRef(self,
        *args) BroadcasterMatchesRef(SBEvent self, SBBroadcaster broadcaster) -> 
      bool
 | source code |  | 
    |  |  | 
    |  | 
        
          | GetDescription(self,
        *args) GetDescription(SBEvent self, SBStream description) -> bool
 | source code |  | 
  
    | Inherited from object:__delattr__,__format__,__getattribute__,__hash__,__new__,__reduce__,__reduce_ex__,__sizeof__,__str__,__subclasshook__ | 
    |  | 
        
          | GetCStringFromEvent(*args) GetCStringFromEvent(SBEvent event) -> str const *
 | source code |  | 
    |  | __swig_setmethods__ = {} | 
    |  | __swig_getmethods__ = {} | 
  
    | Inherited from object:__class__ | 
| x.__setattr__('name', value) <==> x.name = value 
    Overrides:
        object.__setattr__
        (inherited documentation) | 
 
| repr(x) 
    Overrides:
        object.__repr__
        (inherited documentation) | 
 
| __init__(lldb::SBEvent self) -> SBEvent __init__(lldb::SBEvent 
  self, SBEvent rhs) -> SBEvent __init__(self, int type, str data) ->
  SBEvent (make an event that contains a C string) 
    Overrides:
        object.__init__
     |