LLDB mainline
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
lldb_private::BreakpointResolverName Class Reference

"lldb/Breakpoint/BreakpointResolverName.h" This class sets breakpoints on a given function name, either by exact match or by regular expression. More...

#include <BreakpointResolverName.h>

Inheritance diagram for lldb_private::BreakpointResolverName:
Inheritance graph
[legend]

Public Member Functions

 BreakpointResolverName (const lldb::BreakpointSP &bkpt, const char *name, lldb::FunctionNameType name_type_mask, lldb::LanguageType language, Breakpoint::MatchType type, lldb::addr_t offset, bool skip_prologue)
 
 BreakpointResolverName (const lldb::BreakpointSP &bkpt, const char *names[], size_t num_names, lldb::FunctionNameType name_type_mask, lldb::LanguageType language, lldb::addr_t offset, bool skip_prologue)
 
 BreakpointResolverName (const lldb::BreakpointSP &bkpt, const std::vector< std::string > &names, lldb::FunctionNameType name_type_mask, lldb::LanguageType language, lldb::addr_t offset, bool skip_prologue)
 
 BreakpointResolverName (const lldb::BreakpointSP &bkpt, RegularExpression func_regex, lldb::LanguageType language, lldb::addr_t offset, bool skip_prologue)
 
StructuredData::ObjectSP SerializeToStructuredData () override
 
 ~BreakpointResolverName () override=default
 
Searcher::CallbackReturn SearchCallback (SearchFilter &filter, SymbolContext &context, Address *addr) override
 
lldb::SearchDepth GetDepth () override
 
void GetDescription (Stream *s) override
 Prints a canonical description for the breakpoint to the stream s.
 
void Dump (Stream *s) const override
 Standard "Dump" method. At present it does nothing.
 
lldb::BreakpointResolverSP CopyForBreakpoint (lldb::BreakpointSP &breakpoint) override
 
- Public Member Functions inherited from lldb_private::BreakpointResolver
 BreakpointResolver (const lldb::BreakpointSP &bkpt, unsigned char resolverType, lldb::addr_t offset=0)
 The breakpoint resolver need to have a breakpoint for "ResolveBreakpoint to make sense.
 
 ~BreakpointResolver () override
 The Destructor is virtual, all significant breakpoint resolvers derive from this class.
 
void SetBreakpoint (const lldb::BreakpointSP &bkpt)
 This sets the breakpoint for this resolver.
 
lldb::BreakpointSP GetBreakpoint () const
 This gets the breakpoint for this resolver.
 
void SetOffset (lldb::addr_t offset)
 This updates the offset for this breakpoint.
 
lldb::addr_t GetOffset () const
 
virtual void ResolveBreakpoint (SearchFilter &filter)
 In response to this method the resolver scans all the modules in the breakpoint's target, and adds any new locations it finds.
 
virtual void ResolveBreakpointInModules (SearchFilter &filter, ModuleList &modules)
 In response to this method the resolver scans the modules in the module list modules, and adds any new locations it finds.
 
void GetDescription (Stream *s) override=0
 Prints a canonical description for the breakpoint to the stream s.
 
virtual void Dump (Stream *s) const =0
 Standard "Dump" method. At present it does nothing.
 
virtual StructuredData::ObjectSP SerializeToStructuredData ()
 
StructuredData::DictionarySP WrapOptionsDict (StructuredData::DictionarySP options_dict_sp)
 
unsigned getResolverID () const
 getResolverID - Return an ID for the concrete type of this object.
 
enum ResolverTy GetResolverTy ()
 
const char * GetResolverName ()
 
virtual lldb::BreakpointResolverSP CopyForBreakpoint (lldb::BreakpointSP &breakpoint)=0
 
- Public Member Functions inherited from lldb_private::Searcher
 Searcher ()
 
virtual ~Searcher ()
 
virtual CallbackReturn SearchCallback (SearchFilter &filter, SymbolContext &context, Address *addr)=0
 
virtual lldb::SearchDepth GetDepth ()=0
 
virtual void GetDescription (Stream *s)
 Prints a canonical description for the searcher to the stream s.
 

Static Public Member Functions

static lldb::BreakpointResolverSP CreateFromStructuredData (const StructuredData::Dictionary &data_dict, Status &error)
 
static bool classof (const BreakpointResolverName *)
 Methods for support type inquiry through isa, cast, and dyn_cast:
 
static bool classof (const BreakpointResolver *V)
 
- Static Public Member Functions inherited from lldb_private::BreakpointResolver
static lldb::BreakpointResolverSP CreateFromStructuredData (const StructuredData::Dictionary &resolver_dict, Status &error)
 This section handles serializing and deserializing from StructuredData objects.
 
static const char * GetSerializationKey ()
 
static const char * GetSerializationSubclassKey ()
 
static const char * GetSerializationSubclassOptionsKey ()
 
static const char * ResolverTyToName (enum ResolverTy)
 
static ResolverTy NameToResolverTy (llvm::StringRef name)
 
static const char * GetKey (OptionNames enum_value)
 

Protected Member Functions

 BreakpointResolverName (const BreakpointResolverName &rhs)
 
void AddNameLookup (ConstString name, lldb::FunctionNameType name_type_mask)
 
- Protected Member Functions inherited from lldb_private::BreakpointResolver
virtual void NotifyBreakpointSet ()
 
void SetSCMatchesByLine (SearchFilter &filter, SymbolContextList &sc_list, bool skip_prologue, llvm::StringRef log_ident, uint32_t line=0, std::optional< uint16_t > column=std::nullopt)
 Takes a symbol context list of matches which supposedly represent the same file and line number in a CU, and find the nearest actual line number that matches, and then filter down the matching addresses to unique entries, and skip the prologue if asked to do so, and then set breakpoint locations in this breakpoint for all the resultant addresses.
 
void SetSCMatchesByLine (SearchFilter &, SymbolContextList &, bool, const char *)=delete
 
lldb::BreakpointLocationSP AddLocation (Address loc_addr, bool *new_location=nullptr)
 

Protected Attributes

std::vector< Module::LookupInfom_lookups
 
ConstString m_class_name
 
RegularExpression m_regex
 
Breakpoint::MatchType m_match_type
 
lldb::LanguageType m_language
 
bool m_skip_prologue
 

Additional Inherited Members

- Public Types inherited from lldb_private::BreakpointResolver
enum  ResolverTy {
  FileLineResolver = 0 , AddressResolver , NameResolver , FileRegexResolver ,
  PythonResolver , ExceptionResolver , LastKnownResolverType = ExceptionResolver , UnknownResolver
}
 An enumeration for keeping track of the concrete subclass that is actually instantiated. More...
 
- Public Types inherited from lldb_private::Searcher
enum  CallbackReturn { eCallbackReturnStop = 0 , eCallbackReturnContinue , eCallbackReturnPop }
 
- Static Public Attributes inherited from lldb_private::BreakpointResolver
static const char * g_ty_to_name [LastKnownResolverType+2]
 
- Protected Types inherited from lldb_private::BreakpointResolver
enum class  OptionNames : uint32_t {
  AddressOffset = 0 , ExactMatch , FileName , Inlines ,
  LanguageName , LineNumber , Column , ModuleName ,
  NameMaskArray , Offset , PythonClassName , RegexString ,
  ScriptArgs , SectionName , SearchDepth , SkipPrologue ,
  SymbolNameArray , LastOptionName
}
 
- Static Protected Attributes inherited from lldb_private::BreakpointResolver
static const char * g_option_names [static_cast< uint32_t >(OptionNames::LastOptionName)]
 

Detailed Description

"lldb/Breakpoint/BreakpointResolverName.h" This class sets breakpoints on a given function name, either by exact match or by regular expression.

Definition at line 24 of file BreakpointResolverName.h.

Constructor & Destructor Documentation

◆ BreakpointResolverName() [1/5]

lldb_private::BreakpointResolverName::BreakpointResolverName ( const lldb::BreakpointSP bkpt,
const char *  name,
lldb::FunctionNameType  name_type_mask,
lldb::LanguageType  language,
Breakpoint::MatchType  type,
lldb::addr_t  offset,
bool  skip_prologue 
)

◆ BreakpointResolverName() [2/5]

lldb_private::BreakpointResolverName::BreakpointResolverName ( const lldb::BreakpointSP bkpt,
const char *  names[],
size_t  num_names,
lldb::FunctionNameType  name_type_mask,
lldb::LanguageType  language,
lldb::addr_t  offset,
bool  skip_prologue 
)

◆ BreakpointResolverName() [3/5]

lldb_private::BreakpointResolverName::BreakpointResolverName ( const lldb::BreakpointSP bkpt,
const std::vector< std::string > &  names,
lldb::FunctionNameType  name_type_mask,
lldb::LanguageType  language,
lldb::addr_t  offset,
bool  skip_prologue 
)

◆ BreakpointResolverName() [4/5]

BreakpointResolverName::BreakpointResolverName ( const lldb::BreakpointSP bkpt,
RegularExpression  func_regex,
lldb::LanguageType  language,
lldb::addr_t  offset,
bool  skip_prologue 
)

Definition at line 71 of file BreakpointResolverName.cpp.

◆ ~BreakpointResolverName()

lldb_private::BreakpointResolverName::~BreakpointResolverName ( )
overridedefault

◆ BreakpointResolverName() [5/5]

BreakpointResolverName::BreakpointResolverName ( const BreakpointResolverName rhs)
protected

Definition at line 81 of file BreakpointResolverName.cpp.

Member Function Documentation

◆ AddNameLookup()

void BreakpointResolverName::AddNameLookup ( ConstString  name,
lldb::FunctionNameType  name_type_mask 
)
protected

◆ classof() [1/2]

static bool lldb_private::BreakpointResolverName::classof ( const BreakpointResolver V)
inlinestatic

◆ classof() [2/2]

static bool lldb_private::BreakpointResolverName::classof ( const BreakpointResolverName )
inlinestatic

Methods for support type inquiry through isa, cast, and dyn_cast:

Definition at line 72 of file BreakpointResolverName.h.

◆ CopyForBreakpoint()

lldb::BreakpointResolverSP BreakpointResolverName::CopyForBreakpoint ( lldb::BreakpointSP breakpoint)
overridevirtual

Implements lldb_private::BreakpointResolver.

Definition at line 422 of file BreakpointResolverName.cpp.

◆ CreateFromStructuredData()

BreakpointResolverSP BreakpointResolverName::CreateFromStructuredData ( const StructuredData::Dictionary data_dict,
Status error 
)
static

◆ Dump()

void BreakpointResolverName::Dump ( Stream s) const
overridevirtual

Standard "Dump" method. At present it does nothing.

Implements lldb_private::BreakpointResolver.

Definition at line 419 of file BreakpointResolverName.cpp.

◆ GetDepth()

lldb::SearchDepth BreakpointResolverName::GetDepth ( )
overridevirtual

Implements lldb_private::Searcher.

Definition at line 394 of file BreakpointResolverName.cpp.

References lldb::eSearchDepthModule.

◆ GetDescription()

void BreakpointResolverName::GetDescription ( Stream s)
overridevirtual

◆ SearchCallback()

Searcher::CallbackReturn BreakpointResolverName::SearchCallback ( SearchFilter filter,
SymbolContext context,
Address addr 
)
overridevirtual

Implements lldb_private::Searcher.

Definition at line 254 of file BreakpointResolverName.cpp.

References lldb_private::BreakpointResolver::AddLocation(), lldb_private::SearchFilter::AddressPasses(), lldb_private::Architecture::AdjustBreakpointAddress(), lldb_private::Breakpoints, lldb_private::Address::Clear(), lldb_private::SymbolContext::comp_unit, lldb_private::SearchFilter::CompUnitPasses(), lldb_private::Searcher::eCallbackReturnContinue, lldb_private::Searcher::eCallbackReturnStop, lldb::eDescriptionLevelVerbose, lldb::eLanguageTypeUnknown, lldb::eSymbolTypeReExported, lldb_private::Breakpoint::Exact, lldb_private::Symbol::GetAddress(), lldb_private::Target::GetArchitecturePlugin(), lldb_private::BreakpointResolver::GetBreakpoint(), lldb_private::SymbolContextList::GetContextAtIndex(), lldb_private::StreamString::GetData(), lldb_private::SearchFilter::GetFilterRequiredItems(), lldb_private::SymbolContext::GetLanguage(), lldb_private::GetLog(), lldb_private::Address::GetOffset(), lldb_private::Language::GetPrimaryLanguage(), lldb_private::SymbolContextList::GetSize(), lldb_private::Breakpoint::GetTarget(), lldb_private::Breakpoint::Glob, lldb_private::ModuleFunctionSearchOptions::include_inlines, lldb_private::ModuleFunctionSearchOptions::include_symbols, lldb_private::Breakpoint::IsInternal(), lldb_private::Address::IsValid(), LLDB_LOGF, m_class_name, m_language, m_lookups, m_match_type, m_regex, m_skip_prologue, lldb_private::SymbolContext::module_sp, lldb_private::Breakpoint::Regexp, lldb_private::SymbolContextList::RemoveContextAtIndex(), lldb_private::Symbol::ResolveReExportedSymbol(), lldb_private::Address::SetOffset(), and lldb_private::Log::Warning().

◆ SerializeToStructuredData()

StructuredData::ObjectSP BreakpointResolverName::SerializeToStructuredData ( )
overridevirtual

Member Data Documentation

◆ m_class_name

ConstString lldb_private::BreakpointResolverName::m_class_name
protected

Definition at line 84 of file BreakpointResolverName.h.

Referenced by SearchCallback().

◆ m_language

lldb::LanguageType lldb_private::BreakpointResolverName::m_language
protected

◆ m_lookups

std::vector<Module::LookupInfo> lldb_private::BreakpointResolverName::m_lookups
protected

◆ m_match_type

Breakpoint::MatchType lldb_private::BreakpointResolverName::m_match_type
protected

Definition at line 86 of file BreakpointResolverName.h.

Referenced by GetDescription(), and SearchCallback().

◆ m_regex

RegularExpression lldb_private::BreakpointResolverName::m_regex
protected

◆ m_skip_prologue

bool lldb_private::BreakpointResolverName::m_skip_prologue
protected

Definition at line 88 of file BreakpointResolverName.h.

Referenced by SearchCallback(), and SerializeToStructuredData().


The documentation for this class was generated from the following files: