我正在使用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
语句之外的解决方法。