LLDB 快速打印对象

问题描述 投票:0回答:1

我对如何使用 LLDB 来检查 swift 项目中的对象感到有点困惑。在这种特殊情况下,我使用 NSJSONSerializer 序列化一小块 JSON,并且我想检查该值。在 Xcode 5.1 中,这非常简单,只需在 lldb 提示符下输入“po json”,我就会得到我想要的。现在,命令 po 和 print 因打印出大部分垃圾而让我失败。我什至尝试调用描述属性,因为它适用于某些快速类型,但仍然不起作用。作为最后的手段,我使用了带有 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) 
swift lldb
1个回答
0
投票

你可以试试

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

“po”的工作方式与 ObjC 中的工作方式不同,这是一个已知的限制。显式解开可选值,并允许对解开的值进行动态类型解析应该可行

© www.soinside.com 2019 - 2024. All rights reserved.