“return” from method while stepping?

2019-02-16 12:53发布

问题:

I would like to exit out the current method that I'm stepping through.

-(void)helloWorld {
    NSLog(@"Hello");
    // I would like to return here, so that "World" isn't printed.
    NSLog(@"World");  
}

I have tried the following, but without luck.

(lldb) expr return
<no result>

Is this possible with lldb?

回答1:

When you are debugging using Xcode and when your program is paused at a breakpoint, you can drag the little green arrow to any other line in the function. E.g. in the following code:

if I want to skip the NSLog(@"B"), I can simply drag the green arrow from line 20 to line 23, which means the function will simply "return" from anywhere I want.



回答2:

Unfortunately in Xcode 4.5.x there is no way to force an early return from a function. In the current lldb sources over at http://lldb.llvm.org/ there is a newly added command, thread return, which does what you want - it includes the ability to specify the return value of the function. This won't be in Xcode until the next major release, though.