【问题标题】:"return" from method while stepping?步进时从方法“返回”?
【发布时间】:2012-10-04 01:01:00
【问题描述】:

我想退出我正在逐步执行的当前方法。

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

我尝试了以下方法,但没有运气。

(lldb) expr return
<no result>

lldb 可以做到这一点吗?

【问题讨论】:

    标签: objective-c xcode lldb


    【解决方案1】:

    不幸的是,在 Xcode 4.5.x 中,无法强制从函数提前返回。在http://lldb.llvm.org/ 的当前 lldb 源中,有一个新添加的命令 thread return,它可以执行您想要的操作 - 它包括指定函数返回值的能力。不过,这要等到下一个主要版本才会出现在 Xcode 中。

    【讨论】:

      【解决方案2】:

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

      如果我想跳过NSLog(@"B"),我可以简单地将绿色箭头从第20行拖到第23行,这意味着该函数将简单地从我想要的任何地方“返回”。

      【讨论】:

      • 我看到有几个人报告说,在 LLDB 和 ARC 下,将 PC 拖到新位置会导致崩溃。还有一些问题需要解决。此外,如果您熟悉 GDB,但不熟悉 LLDB,请保存一份这份备忘单:lldb.llvm.org/lldb-gdb.html
      • 是的,除非您了解幕后进行的所有运行时/内存分配/初始化,否则通常拖拽电脑是非常危险的。如果你有一系列简单的陈述,你通常可以侥幸逃脱,但任何更复杂的陈述都充满了隐藏的陷阱。
      【解决方案3】:

      我刚刚在下面提到的行添加了一个断点:

      var computed: Bool { 
         return device.time == 10 // added breakpoint here
      }
      

      并得到以下错误:

      错误:从线程 1 的第 0 帧返回错误:我们只支持 目前设置简单的整数和浮点返回类型..

      似乎只适用于这两种类型

      【讨论】:

        猜你喜欢
        • 2020-04-28
        • 2011-09-06
        • 2012-09-05
        • 2019-09-05
        • 1970-01-01
        • 1970-01-01
        • 2018-09-14
        • 1970-01-01
        • 2013-05-03
        相关资源
        最近更新 更多