124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBBreakpoint.h ------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef LLDB_SBBreakpoint_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBBreakpoint_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb { 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBBreakpoint 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef bool (*BreakpointHitCallback) (void *baton, 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBProcess &process, 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBThread &thread, 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBBreakpointLocation &location); 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBBreakpoint (); 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBBreakpoint (const lldb::SBBreakpoint& rhs); 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~SBBreakpoint(); 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 32538eb82a89a68dbc57251915080bd5152b333978Greg Clayton const lldb::SBBreakpoint & 33538eb82a89a68dbc57251915080bd5152b333978Greg Clayton operator = (const lldb::SBBreakpoint& rhs); 34ea49cc78c01f34f874b7e710acebea4ead404be1Greg Clayton 35ea49cc78c01f34f874b7e710acebea4ead404be1Greg Clayton // Tests to see if the opaque breakpoint object in this object matches the 36ea49cc78c01f34f874b7e710acebea4ead404be1Greg Clayton // opaque breakpoint object in "rhs". 37ea49cc78c01f34f874b7e710acebea4ead404be1Greg Clayton bool 38ea49cc78c01f34f874b7e710acebea4ead404be1Greg Clayton operator == (const lldb::SBBreakpoint& rhs); 39ea49cc78c01f34f874b7e710acebea4ead404be1Greg Clayton 400765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata bool 410765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata operator != (const lldb::SBBreakpoint& rhs); 420765e3274aab0551fea7678bee565c7d68e0b786Enrico Granata 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner break_id_t 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetID () const; 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner IsValid() const; 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ClearAllBreakpointSites (); 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBBreakpointLocation 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FindLocationByAddress (lldb::addr_t vm_addr); 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::break_id_t 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FindLocationIDByAddress (lldb::addr_t vm_addr); 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBBreakpointLocation 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FindLocationByID (lldb::break_id_t bp_loc_id); 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBBreakpointLocation 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetLocationAtIndex (uint32_t index); 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetEnabled (bool enable); 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner IsEnabled (); 693fcc297c999218b19d7d5ad049e9c955c4bc481dJim Ingham 702753a024a5a314232baa579c0ada87551aa86988Jim Ingham void 712753a024a5a314232baa579c0ada87551aa86988Jim Ingham SetOneShot (bool one_shot); 722753a024a5a314232baa579c0ada87551aa86988Jim Ingham 732753a024a5a314232baa579c0ada87551aa86988Jim Ingham bool 742753a024a5a314232baa579c0ada87551aa86988Jim Ingham IsOneShot () const; 752753a024a5a314232baa579c0ada87551aa86988Jim Ingham 763fcc297c999218b19d7d5ad049e9c955c4bc481dJim Ingham bool 773fcc297c999218b19d7d5ad049e9c955c4bc481dJim Ingham IsInternal (); 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 79c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton uint32_t 80c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton GetHitCount () const; 81c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 8354e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton SetIgnoreCount (uint32_t count); 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8554e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton uint32_t 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetIgnoreCount () const; 87e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham 88e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham void 89e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham SetCondition (const char *condition); 90e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham 91e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham const char * 92e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham GetCondition (); 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetThreadID (lldb::tid_t sb_thread_id); 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::tid_t 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetThreadID (); 998e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 1008e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham void 1018e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham SetThreadIndex (uint32_t index); 1028e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 1038e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham uint32_t 1048e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham GetThreadIndex() const; 1058e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 1068e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham void 1078e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham SetThreadName (const char *thread_name); 1088e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 1098e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham const char * 1108e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham GetThreadName () const; 1118e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 1128e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham void 1138e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham SetQueueName (const char *queue_name); 1148e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 1158e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham const char * 1168e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham GetQueueName () const; 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetCallback (BreakpointHitCallback callback, void *baton); 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNumResolvedLocations() const; 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNumLocations() const; 12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12798f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice bool 128d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton GetDescription (lldb::SBStream &description); 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13028e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham static bool 13128e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham EventIsBreakpointEvent (const lldb::SBEvent &event); 13228e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham 133c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton static lldb::BreakpointEventType 134c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton GetBreakpointEventTypeFromEvent (const lldb::SBEvent& event); 13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 136c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton static lldb::SBBreakpoint 137c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton GetBreakpointFromEvent (const lldb::SBEvent& event); 138c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton 139c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton static lldb::SBBreakpointLocation 140c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton GetBreakpointLocationAtIndexFromEvent (const lldb::SBEvent& event, uint32_t loc_idx); 14128e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham 14228e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham static uint32_t 14328e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham GetNumBreakpointLocationsFromEvent (const lldb::SBEvent &event_sp); 14428e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham 14524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 14724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBBreakpointLocation; 14824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBTarget; 14924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBBreakpoint (const lldb::BreakpointSP &bp_sp); 15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::Breakpoint * 15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator->() const; 15424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::Breakpoint * 15624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner get() const; 15724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::BreakpointSP & 15924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator *(); 16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 16124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb::BreakpointSP & 16224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator *() const; 16324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 16424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static bool 16524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner PrivateBreakpointHitCallback (void *baton, 16624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb_private::StoppointCallbackContext *context, 16724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::user_id_t break_id, 16824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::user_id_t break_loc_id); 16924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17063094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb::BreakpointSP m_opaque_sp; 17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBBreakpoint_h_ 176