summaryrefslogtreecommitdiffstats
path: root/lldb/source/Breakpoint
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2012-03-06 00:37:27 +0000
committerJim Ingham <jingham@apple.com>2012-03-06 00:37:27 +0000
commitfab10e89cea94df0c8aa75cc6a7a0ced7330b587 (patch)
tree0441509077e99a23b00899700c6f599093e2cbcc /lldb/source/Breakpoint
parent330de22fe0f6f23af82825909bfe9dd54237ea62 (diff)
downloadbcm5719-llvm-fab10e89cea94df0c8aa75cc6a7a0ced7330b587.tar.gz
bcm5719-llvm-fab10e89cea94df0c8aa75cc6a7a0ced7330b587.zip
Add a command and an SB API to create exception breakpoints. Make the break output prettier for Exception breakpoints.
llvm-svn: 152081
Diffstat (limited to 'lldb/source/Breakpoint')
-rw-r--r--lldb/source/Breakpoint/Breakpoint.cpp5
-rw-r--r--lldb/source/Breakpoint/BreakpointResolverName.cpp18
2 files changed, 22 insertions, 1 deletions
diff --git a/lldb/source/Breakpoint/Breakpoint.cpp b/lldb/source/Breakpoint/Breakpoint.cpp
index 4d37a7a7edd..7a897661e76 100644
--- a/lldb/source/Breakpoint/Breakpoint.cpp
+++ b/lldb/source/Breakpoint/Breakpoint.cpp
@@ -487,7 +487,10 @@ Breakpoint::GetDescription (Stream *s, lldb::DescriptionLevel level, bool show_l
}
else
{
- s->Printf(", locations = 0 (pending)");
+ // Don't print the pending notification for exception resolvers since we don't generally
+ // know how to set them until the target is run.
+ if (m_resolver_sp->getResolverID() != BreakpointResolver::ExceptionResolver)
+ s->Printf(", locations = 0 (pending)");
}
GetOptions()->GetDescription(s, level);
diff --git a/lldb/source/Breakpoint/BreakpointResolverName.cpp b/lldb/source/Breakpoint/BreakpointResolverName.cpp
index 7b7e7a4f8d0..616307a0906 100644
--- a/lldb/source/Breakpoint/BreakpointResolverName.cpp
+++ b/lldb/source/Breakpoint/BreakpointResolverName.cpp
@@ -61,6 +61,7 @@ BreakpointResolverName::BreakpointResolverName (Breakpoint *bkpt,
bool skip_prologue) :
BreakpointResolver (bkpt, BreakpointResolver::NameResolver),
m_func_name_type_mask (name_type_mask),
+ m_match_type (Breakpoint::Exact),
m_skip_prologue (skip_prologue)
{
for (size_t i = 0; i < num_names; i++)
@@ -69,6 +70,23 @@ BreakpointResolverName::BreakpointResolverName (Breakpoint *bkpt,
}
}
+BreakpointResolverName::BreakpointResolverName (Breakpoint *bkpt,
+ std::vector<std::string> names,
+ uint32_t name_type_mask,
+ bool skip_prologue) :
+ BreakpointResolver (bkpt, BreakpointResolver::NameResolver),
+ m_func_name_type_mask (name_type_mask),
+ m_match_type (Breakpoint::Exact),
+ m_skip_prologue (skip_prologue)
+{
+ size_t num_names = names.size();
+
+ for (size_t i = 0; i < num_names; i++)
+ {
+ m_func_names.push_back (ConstString (names[i].c_str()));
+ }
+}
+
BreakpointResolverName::BreakpointResolverName
(
Breakpoint *bkpt,
OpenPOWER on IntegriCloud