Xcode 7断点日志消息不能可靠地包含表达式结果

时间:2015-11-09 17:45:30

标签: xcode debugging xcode7

我正在使用Xcode 7.1来开发我正在尝试调试的项目,并尝试使用断点日志消息在通过单元测试调用我的函数时这样做。但是,我似乎误解了断点日志记录,或者在Xcode中发现了一个错误:当我尝试在函数中使用断点记录时,日志消息不包含传入参数的值,尽管它确实包括一个局部变量。

例如,给定这个结构:

struct Foo: CustomStringConvertible  {
    var s: String

    func printAFoo(fooToPrint: Foo) {
        let i=1
        // Breakpoint message text:
        //   %B From debugger: fooToPrint=@fooToPrint@; i=@i@
        print("printAFoo: From code: \(fooToPrint); i:\(i)")
    }

}

// MARK: - CustomStringConvertible
extension Foo {
    var description: String {
        return "\(s)"
    }
}

我在指定的行设置断点调试消息,并按如下方式调用:

let foo = Foo(s: "Original string")
foo.printAFoo(foo)

获得输出:

printAFoo(_:) From debugger: fooToPrint=; i=1
printAFoo: From code: Original string; i:1

我注意到这种行为不一致:我最初是针对变异函数对此问题进行故障排除,并注意到断点日志消息未打印任何 @expr@标记值(包括本地i变量),但是在非变异函数中按预期打印所有这些变量。当我继续四处寻找时,我看到传入的参数表达式也停止了对非变异函数的记录。

我怀疑这是一个错误,但想知道是否有其他人看过它,或者知道除了在代码正文中使用print语句之外的解决方法。

0 个答案:

没有答案