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

Err*_*520 18 lldb swift

我在调试Swift Strings时遇到问题

func stringTest() {

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

    // <-- Breakpoint here

    println(test1);
    println(test2);
}
Run Code Online (Sandbox Code Playgroud)

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

po test1
error: <REPL>:1:1: error: use of unresolved identifier 'test1'
test1
^
Run Code Online (Sandbox Code Playgroud)

但我能够成功打印test2:

po test2
test2
Run Code Online (Sandbox Code Playgroud)

sla*_*mor 17

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

编辑:不幸的是,Xcode版本6.0.1(6A317)的第一个版本仍然出现同样的问题

let test1:String  -> debug info is unavailable
var test1:String  -> debug info is available
Run Code Online (Sandbox Code Playgroud)

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

  • 通用汽车仍在发生这种情况.:-( (7认同)
  • 也出现在Xcode 7.1 beta 3中. (3认同)
  • 2个月后,Xcode 8.2.1仍然存在问题.它的尴尬. (2认同)

Jim*_*ham 8

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

(lldb) image lookup -va <PC VALUE>
Run Code Online (Sandbox Code Playgroud)

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

如果您可以在一些示例代码中重现这一点,请提交错误的news.apple.com.