diff options
| author | Jim Ingham <jingham@apple.com> | 2013-01-15 02:47:48 +0000 |
|---|---|---|
| committer | Jim Ingham <jingham@apple.com> | 2013-01-15 02:47:48 +0000 |
| commit | 184e981111d74fe650b7ea4506adc9bc356273ee (patch) | |
| tree | 63abd3ef966759715411399c4d4be97325611df5 /lldb/source/Plugins/Process | |
| parent | ed1950719b38c2dde6d3c1efe1f216a7d90a04b4 (diff) | |
| download | bcm5719-llvm-184e981111d74fe650b7ea4506adc9bc356273ee.tar.gz bcm5719-llvm-184e981111d74fe650b7ea4506adc9bc356273ee.zip | |
Separated the "expr --unwind-on-error" behavior into two parts, actual errors (i.e. crashes) which continue to be
controlled by the --unwind-on-error flag, and --ignore-breakpoint which separately controls behavior when a called
function hits a breakpoint. For breakpoints, we don't unwind, we either stop, or ignore the breakpoint, which makes
more sense.
Also make both these behaviors globally settable through "settings set".
Also handle the case where a breakpoint command calls code that ends up re-hitting the breakpoint. We were recursing
and crashing. Now we just stop without calling the second command.
<rdar://problem/12986644>
<rdar://problem/9119325>
llvm-svn: 172503
Diffstat (limited to 'lldb/source/Plugins/Process')
| -rw-r--r-- | lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp b/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp index 040058b952f..905ab251446 100644 --- a/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp +++ b/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp @@ -48,7 +48,8 @@ bool lldb_private::InferiorCallMmap(Process *process, addr_t &allocated_addr, const uint32_t range_scope = eSymbolContextFunction | eSymbolContextSymbol; const bool use_inline_block_range = false; const bool stop_other_threads = true; - const bool discard_on_error = true; + const bool unwind_on_error = true; + const bool ignore_breakpoints = true; const bool try_all_threads = true; const uint32_t timeout_usec = 500000; @@ -80,7 +81,8 @@ bool lldb_private::InferiorCallMmap(Process *process, addr_t &allocated_addr, mmap_range.GetBaseAddress(), ClangASTType (clang_ast_context->getASTContext(), clang_void_ptr_type), stop_other_threads, - discard_on_error, + unwind_on_error, + ignore_breakpoints, &addr, &length, &prot_arg, @@ -104,7 +106,8 @@ bool lldb_private::InferiorCallMmap(Process *process, addr_t &allocated_addr, call_plan_sp, stop_other_threads, try_all_threads, - discard_on_error, + unwind_on_error, + ignore_breakpoints, timeout_usec, error_strm); if (result == eExecutionCompleted) @@ -152,7 +155,8 @@ bool lldb_private::InferiorCallMunmap(Process *process, addr_t addr, const uint32_t range_scope = eSymbolContextFunction | eSymbolContextSymbol; const bool use_inline_block_range = false; const bool stop_other_threads = true; - const bool discard_on_error = true; + const bool unwind_on_error = true; + const bool ignore_breakpoints = true; const bool try_all_threads = true; const uint32_t timeout_usec = 500000; @@ -163,7 +167,8 @@ bool lldb_private::InferiorCallMunmap(Process *process, addr_t addr, munmap_range.GetBaseAddress(), ClangASTType(), stop_other_threads, - discard_on_error, + unwind_on_error, + ignore_breakpoints, &addr, &length)); if (call_plan_sp) @@ -182,7 +187,8 @@ bool lldb_private::InferiorCallMunmap(Process *process, addr_t addr, call_plan_sp, stop_other_threads, try_all_threads, - discard_on_error, + unwind_on_error, + ignore_breakpoints, timeout_usec, error_strm); if (result == eExecutionCompleted) |

