Debugging Xcode';s';采购订单';未能确定我希望研究的变量。威尼?

Debugging Xcode';s';采购订单';未能确定我希望研究的变量。威尼?,debugging,swift,xcode6,Debugging,Swift,Xcode6,环境:Xcode 6 Beta 4 我试图使用 调试器。但是,调试器无法识别静态变量(通过“Let”)。VAR也是如此 为什么? 以下是调试器结果: (lldb)po文本字段错误::1:1:错误:使用未解析 标识符“textField”textField^:11:5:错误:使用 未解析的标识符“$\uuu lldb\u注入的\u self” $\uuuuLLDB\uInjected\uSelf.$\uuuLLDB\uWrapped\uExpr\u29( ^(lldb)po myText错误::1

环境:Xcode 6 Beta 4
我试图使用 调试器。但是,调试器无法识别静态变量(通过“Let”)。VAR也是如此

为什么?

以下是调试器结果:

(lldb)po文本字段错误::1:1:错误:使用未解析 标识符“textField”textField^:11:5:错误:使用 未解析的标识符“$\uuu lldb\u注入的\u self” $\uuuuLLDB\uInjected\uSelf.$\uuuLLDB\uWrapped\uExpr\u29(
^(lldb)po myText错误::1:1:错误:使用未解析标识符“myText”myText^:11:5:错误:使用未解析标识符 标识符“$\uu lldb\u注入的\u self” $\uuuuLLDB\uInjected\uSelf.$\uuuLLDB\uWrapped\uExpr\u30(
^(lldb)po theText错误::1:1:错误:使用未解析标识符“theText”theText^:11:5:错误:使用未解析标识符 标识符“$\uu lldb\u注入的\u self” $\uuuLLDB\uInjected\uSelf.$\uuLLDB\uWrapped\uExpr\u31(
^(lldb)

注意:调试输出设置为“所有输出”

以下是截图:


这是我遇到的一个问题,我认为这是调试器中的一个错误。如果您不使用任何用“let”声明的变量,po命令将起作用。这当然不是您想要的,因此我向Apple提交了一个关于此问题的错误


我想你应该希望它能在下一次测试中修复(请也提交一个bug,因为提交的bug数量会影响苹果修复它们的优先级)。同时,使用Amitays解决方案。

正如上面其他人所确认的,这在Swift/LLDB中是一个非常严格的错误。它主要在6.1.1版开始工作,在6.3 Beta 1版或之前中断,在6.3 Beta 2版中再次修复

我只是将命令行应用程序用作测试,无法使用UIKit进行测试,但我在UIKit之外也看到过类似的问题——所谓问题,我的意思是我得到了与OP类似的结果,但现在它正在工作:

struct Foobar {
    var foo:String
    var bar:String
}

func textFieldShouldReturn() -> Bool {
    let fubar = Foobar(foo: "Onesy", bar: "Twosy")
    let myText = "Hello World"
    return true
}

textFieldShouldReturn()
p和po产生的结果略有不同,这取决于是否实现了可打印:

(lldb) po fubar
(foo = "Onesy", bar = "Twosy")

(lldb) p fubar
(AssertClientMacDirect.Foobar) $R1 = (foo = "Onesy", bar = "Twosy")
根据此处的线程:,还可以使用
图像查找-t
命令

image lookup -t Fubar

<path redacted>
id = {0x1000003e0}, name = "AssertMac.Fubar", byte-size = 8, clang_type = "class Fubar {
class func `new`(name: Swift.String) -> AssertMac.Fubar
init(name: Swift.String)
func test()
var someValue: Swift.String
var name: Swift.String
@objc deinit
}
图像查找-t Fubar
id={0x100003e0},name=“AssertMac.Fubar”,字节大小=8,clang_type=“class Fubar{
类func`new`(名称:Swift.String)->AssertMac.Fubar
init(名称:Swift.String)
func测试()
var someValue:Swift.String
变量名称:Swift.String
@objc脱硝剂
}
但值得强调的是,您应该仔细检查Swift编译器是否设置为:

  • 调试/优化->无
  • 复制上的条形符号->否
  • 链接时间优化->否
  • 删除安装->否上的符号(适用于调试版本)
如果在swift类上实现Printable,那么将获得description属性的结果


以前存在Xcode错误,在尝试单步执行优化代码时,Xcode会崩溃。

尝试此操作时是否在该函数内的断点处停止?断点在函数()内.好的,我只是想确定一下。鉴于此,很遗憾我不知道出了什么问题。但现在这是一个结构良好的问题,+1.代码工作……能够处理文本。但是调试器很差劲。我怀疑调试器不是太快。我怀疑,部分原因是它被
var
let
弄糊涂了,可能无法定位te
这是另一种情况。这肯定是一个与Swift相关的问题。Objective-C版本有效。因此我向苹果公司提交了一个bug:Report#17823710.Xcode 8.2.1仍然存在问题。看来他们没有任何计划来修复它!
image lookup -t Fubar

<path redacted>
id = {0x1000003e0}, name = "AssertMac.Fubar", byte-size = 8, clang_type = "class Fubar {
class func `new`(name: Swift.String) -> AssertMac.Fubar
init(name: Swift.String)
func test()
var someValue: Swift.String
var name: Swift.String
@objc deinit
}