2012-10-13 14 views
10

我想退出当前正在执行的方法。从方法“返回”,而步进?

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

我试过以下,但没有运气。

(lldb) expr return 
<no result> 

这可能与lldb?

回答

6

当您使用Xcode进行调试时以及程序在断点处暂停时,您可以将小绿箭头拖到函数中的任何其他行。例如。在下面的代码:

Xcode breakpoint

,如果我想跳过NSLog(@"B"),我可以简单地将来自线20的绿色箭头到第23行,这意味着将简单地“回归”从任何地方我想要的功能。

+1

我见过几个人报告说,在LLDB和ARC下,将PC拖到新位置可能会导致崩溃。还有一些问题需要解决。另外,如果您熟悉GDB,但不熟悉LLDB,请保存此备忘单的副本:http://lldb.llvm.org/lldb-gdb.html –

+0

是的,一般情况下拖动电脑非常危险,除非您了解所有在幕后进行的运行时/内存分配/初始化。如果你有一系列简单的陈述,你可以经常得到它,但是更复杂的东西,它充满了隐藏的陷阱。 –

17

不幸的是,在Xcode 4.5.x中,没有办法迫使一个函数尽早返回。在http://lldb.llvm.org/当前的lldb源文件中,有一个新添加的命令thread return,它可以做你想做的事 - 它包括指定函数返回值的能力。不过,在下一个主要版本之前,这不会在Xcode中。

+7

在Xcode 6中,'线程返回'开箱即用 – fabb