[Lldb-commits] [lldb] [lldb][nfc] Add customization flags for ThreadPlanStepOut (PR #135866)

via lldb-commits lldb-commits at lists.llvm.org
Wed Apr 16 11:51:51 PDT 2025


jimingham wrote:

> > then it would queue up a ThreadPlanStepOut that would go to that frame.
> 
> To elaborate on this, today there is no constructor for StepOut that allows one to specify a target frame. This is also something we would need to create for that to work, right?

The main constructor for ThreadStepOut is:

```
  ThreadPlanStepOut(Thread &thread, SymbolContext *addr_context,
                    bool first_insn, bool stop_others, Vote report_stop_vote,
                    Vote report_run_vote, uint32_t frame_idx,
                    LazyBool step_out_avoids_code_without_debug_info,
                    bool continue_to_next_branch = false,
                    bool gather_return_value = true);

```
The `frame_idx` parameter is the frame you step out to.  We use that, for instance, to implement "stepping out to the currently selected frame":

`(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
  * frame #0: 0x0000000100000330 callem`A at callem.c:2
    frame #1: 0x000000010000035c callem`B at callem.c:6
    frame #2: 0x0000000100000380 callem`C at callem.c:10
    frame #3: 0x00000001000003a4 callem`D at callem.c:14
    frame #4: 0x00000001000003c8 callem`main at callem.c:18
    frame #5: 0x00000001821e2b4c dyld`start
(lldb) up
frame #1: 0x000000010000035c callem`B at callem.c:6
   3   	}
   4   	
   5   	int B (int input) {
-> 6   	  return A(input);
    	         ^
   7   	}
   8   	
   9   	int C (int input) {
(lldb) up
frame #2: 0x0000000100000380 callem`C at callem.c:10
   7   	}
   8   	
   9   	int C (int input) {
-> 10  	  return B(input);
    	         ^
   11  	}
   12  	
   13  	int D (int input) {
(lldb) fin
Process 68455 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = step out
Return value: (int) $0 = 500

    frame #0: 0x00000001000003a4 callem`D at callem.c:14
   11  	}
   12  	
   13  	int D (int input) {
-> 14  	  return C(input);
    	  ^
   15  	}
   16  	
   17  	int main() {
Target 0: (callem) stopped.
`

https://github.com/llvm/llvm-project/pull/135866


More information about the lldb-commits mailing list