po Swift String"未解析的标识符"

时间:2014-06-19 14:25:40

标签: swift lldb

我无法调试Swift Strings

func stringTest() {

    let test1:String =   "test1";
    let test2:NSString = "test2";

    // <-- Breakpoint here

    println(test1);
    println(test2);
}

如果我在这些行之后设置断点并尝试打印test1,则会出现以下错误:

po test1
error: <REPL>:1:1: error: use of unresolved identifier 'test1'
test1
^

但我能够成功打印test2:

po test2
test2

2 个答案:

答案 0 :(得分:17)

这是Beta的错误。 Xcode6-Beta5仍有这个bug。 你只能获得swift变量的调试信息,但不能获得swift的常量。 暂时您可以将让test1 更改为 var test1 ,您将获得调试信息。 希望这将在发布版本中修复。调试好运;)

编辑: 不幸的是,在Xcode Version 6.0.1(6A317)的第一版中仍然存在同样的问题

let test1:String  -> debug info is unavailable
var test1:String  -> debug info is available

EDIT2: 是的,确认。它也适用于OS X Yosemite下最新Xcode 6.1中的iOS应用程序。

答案 1 :(得分:8)

这很可能是调试信息输出中的错误。您可以通过抓取PC来检查,例如从register read pc,然后执行:

(lldb) image lookup -va <PC VALUE>

这将打印出一堆东西,但最后的条目将是调试器当前可见的所有变量,以及它们存在的位置(在寄存器或内存中)。如果你没有看到那里的变量,那么调试信息必须告诉lldb该变量当前不存在。

如果您可以在一些示例代码中重现这一点,请提交bug news.apple.com./ / p>