diff options
author | Greg Clayton <gclayton@apple.com> | 2011-01-21 06:11:58 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2011-01-21 06:11:58 +0000 |
commit | 481cef25dcbcd81a942d037004c573716a796c71 (patch) | |
tree | b9dd6cec5215fff40e47fcda3525314e1f3b9aa5 /lldb/source/Target/Thread.cpp | |
parent | 47ff14b091ee66a4c5f159e7fb8714ca9a66d2f9 (diff) | |
download | bcm5719-llvm-481cef25dcbcd81a942d037004c573716a796c71.tar.gz bcm5719-llvm-481cef25dcbcd81a942d037004c573716a796c71.zip |
Added support for stepping out of a frame. If you have 10 stack frames, and you
select frame #3, you can then do a step out and be able to go directly to the
frame above frame #3!
Added StepOverUntil and StepOutOfFrame to the SBThread API to allow more powerful
stepping.
llvm-svn: 123970
Diffstat (limited to 'lldb/source/Target/Thread.cpp')
-rw-r--r-- | lldb/source/Target/Thread.cpp | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index 48a11a272ed..2c544a2ca5b 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -661,7 +661,12 @@ Thread::QueueFundamentalPlan (bool abort_other_plans) } ThreadPlan * -Thread::QueueThreadPlanForStepSingleInstruction (bool step_over, bool abort_other_plans, bool stop_other_threads) +Thread::QueueThreadPlanForStepSingleInstruction +( + bool step_over, + bool abort_other_plans, + bool stop_other_threads +) { ThreadPlanSP thread_plan_sp (new ThreadPlanStepInstruction (*this, step_over, stop_other_threads, eVoteNoOpinion, eVoteNoOpinion)); QueueThreadPlan (thread_plan_sp, abort_other_plans); @@ -706,10 +711,24 @@ Thread::QueueThreadPlanForStepOverBreakpointPlan (bool abort_other_plans) } ThreadPlan * -Thread::QueueThreadPlanForStepOut (bool abort_other_plans, SymbolContext *addr_context, bool first_insn, - bool stop_other_threads, Vote stop_vote, Vote run_vote) +Thread::QueueThreadPlanForStepOut +( + bool abort_other_plans, + SymbolContext *addr_context, + bool first_insn, + bool stop_other_threads, + Vote stop_vote, + Vote run_vote, + uint32_t frame_idx +) { - ThreadPlanSP thread_plan_sp (new ThreadPlanStepOut (*this, addr_context, first_insn, stop_other_threads, stop_vote, run_vote)); + ThreadPlanSP thread_plan_sp (new ThreadPlanStepOut (*this, + addr_context, + first_insn, + stop_other_threads, + stop_vote, + run_vote, + frame_idx)); QueueThreadPlan (thread_plan_sp, abort_other_plans); return thread_plan_sp.get(); } @@ -761,11 +780,12 @@ Thread::QueueThreadPlanForRunToAddress (bool abort_other_plans, ThreadPlan * Thread::QueueThreadPlanForStepUntil (bool abort_other_plans, - lldb::addr_t *address_list, - size_t num_addresses, - bool stop_other_threads) + lldb::addr_t *address_list, + size_t num_addresses, + bool stop_other_threads, + uint32_t frame_idx) { - ThreadPlanSP thread_plan_sp (new ThreadPlanStepUntil (*this, address_list, num_addresses, stop_other_threads)); + ThreadPlanSP thread_plan_sp (new ThreadPlanStepUntil (*this, address_list, num_addresses, stop_other_threads, frame_idx)); QueueThreadPlan (thread_plan_sp, abort_other_plans); return thread_plan_sp.get(); |