LLDB swift打印对象

时间:2014-11-12 20:12:43

标签: swift lldb

我对如何使用LLDB检查快速项目中的对象有点愚蠢。在这种特殊情况下,我使用NSJSONSerializer来序列化一小块JSON,我想检查一下这个值。在Xcode 5.1中,这非常简单,只需输入" po json"在lldb提示符下,我得到了我想要的东西。现在命令po和print通过打印出大部分垃圾来使我失败。我甚至尝试调用description属性,因为它适用于一些快速类型,但仍然无法工作。作为最后的手段,我使用了一个带有println语句的表达式,最后它起作用了。当然必须有一个更简单的方法吗?这是LLDB的输出:

(lldb) print json
(AnyObject?) $R4 = (instance_type = Builtin.RawPointer = 0x00007ff05c0c49d0 ->     0x0000000107ef32c8 (void *)0x0000000107ef32f0: __NSCFDictionary)
(lldb) po json
(instance_type = Builtin.RawPointer = 0x00007ff05c0c49d0 -> 0x0000000107ef32c8 (void  *)0x0000000107ef32f0: __NSCFDictionary)
 {
  instance_type = 0x00007ff05c0c49d0 -> 0x0000000107ef32c8 (void *)0x0000000107ef32f0:  __NSCFDictionary
}
(lldb) print json.description?
error: <EXPR>:1:1: error: 'Optional<AnyObject>' does not have a member named 'description'
json.description?
^    ~~~~~~~~~~~

(lldb) po json.description?
error: <EXPR>:1:1: error: 'Optional<AnyObject>' does not have a member named    'description'
json.description?
^    ~~~~~~~~~~~
(lldb) expression
Enter expressions, then terminate with an empty line to evaluate:
1 println(json)
2 
Optional({
    errors =     {
        "authorizations.provider_user_id" =         (
            "has already been taken"
        );
    };
})
(lldb) 

1 个答案:

答案 0 :(得分:0)

你可以尝试

(lldb)expr -O -d run - json!

&#34; po&#34;与ObjC中的方式完全不同,这是一个已知的限制。明确展开可选项,并允许对展开值进行动态类型解析

相关问题