diff options
| author | Jim Ingham <jingham@apple.com> | 2018-09-13 21:35:32 +0000 |
|---|---|---|
| committer | Jim Ingham <jingham@apple.com> | 2018-09-13 21:35:32 +0000 |
| commit | 3815e702e751efb14188c0f0beeb10e343d8f053 (patch) | |
| tree | 26247d7b8a0c3b3df344225d770ef7e6d553419c /lldb/source/Breakpoint | |
| parent | d2316d756e2f3827ec662aee05d786d039b3d568 (diff) | |
| download | bcm5719-llvm-3815e702e751efb14188c0f0beeb10e343d8f053.tar.gz bcm5719-llvm-3815e702e751efb14188c0f0beeb10e343d8f053.zip | |
Add a "scripted" breakpoint type to lldb.
This change allows you to write a new breakpoint type where the
logic for setting breakpoints is determined by a Python callback
written using the SB API's.
Differential Revision: https://reviews.llvm.org/D51830
llvm-svn: 342185
Diffstat (limited to 'lldb/source/Breakpoint')
| -rw-r--r-- | lldb/source/Breakpoint/BreakpointResolver.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lldb/source/Breakpoint/BreakpointResolver.cpp b/lldb/source/Breakpoint/BreakpointResolver.cpp index de8032d2359..61a204aff94 100644 --- a/lldb/source/Breakpoint/BreakpointResolver.cpp +++ b/lldb/source/Breakpoint/BreakpointResolver.cpp @@ -21,6 +21,7 @@ #include "lldb/Breakpoint/BreakpointResolverFileLine.h" #include "lldb/Breakpoint/BreakpointResolverFileRegex.h" #include "lldb/Breakpoint/BreakpointResolverName.h" +#include "lldb/Breakpoint/BreakpointResolverScripted.h" #include "lldb/Core/Address.h" #include "lldb/Core/ModuleList.h" #include "lldb/Core/SearchFilter.h" @@ -44,9 +45,10 @@ const char *BreakpointResolver::g_ty_to_name[] = {"FileAndLine", "Address", const char *BreakpointResolver::g_option_names[static_cast<uint32_t>( BreakpointResolver::OptionNames::LastOptionName)] = { - "AddressOffset", "Exact", "FileName", "Inlines", "Language", - "LineNumber", "Column", "ModuleName", "NameMask", "Offset", - "Regex", "SectionName", "SkipPrologue", "SymbolNames"}; + "AddressOffset", "Exact", "FileName", "Inlines", "Language", + "LineNumber", "Column", "ModuleName", "NameMask", "Offset", + "PythonClass", "Regex", "ScriptArgs", "SectionName", "SearchDepth", + "SkipPrologue", "SymbolNames"}; const char *BreakpointResolver::ResolverTyToName(enum ResolverTy type) { if (type > LastKnownResolverType) @@ -132,6 +134,10 @@ BreakpointResolverSP BreakpointResolver::CreateFromStructuredData( resolver = BreakpointResolverFileRegex::CreateFromStructuredData( nullptr, *subclass_options, error); break; + case PythonResolver: + resolver = BreakpointResolverScripted::CreateFromStructuredData( + nullptr, *subclass_options, error); + break; case ExceptionResolver: error.SetErrorString("Exception resolvers are hard."); break; @@ -165,6 +171,7 @@ StructuredData::DictionarySP BreakpointResolver::WrapOptionsDict( void BreakpointResolver::SetBreakpoint(Breakpoint *bkpt) { m_breakpoint = bkpt; + NotifyBreakpointSet(); } void BreakpointResolver::ResolveBreakpointInModules(SearchFilter &filter, |

