LLDB中的po与swift

Ján*_*nos 36 lldb swift

如何在带有LLDB的Swift应用程序中绘制变量的值?

早些时候它就像 po variable_name

现在我经常会遇到一些令人讨厌的错误,例如:

(lldb) po a
error: <EXPR>:11:5: error: use of unresolved identifier '$__lldb_injected_self'
    $__lldb_injected_self.$__lldb_wrapped_expr_2(     
    ^
Run Code Online (Sandbox Code Playgroud)

Enr*_*ata 18

这个错误听起来可能是因为DWARF没有告诉LLDB在哪里找到你的"自我"对象.鉴于Swift的性质,LLDB需要知道self的类型才能在本地范围内注入表达式找出这是否是您的问题的一种方法是在LLDB提示符下执行:

(lldb)帧变量-L self

你可能不会看到它的位置.值得提交错误报告,只是为了跟踪你的特定repro案例

无论如何,要解决你的大部分问题.在Swift中,对于像ObjC这样的"打印描述"没有语言认可的机制,所以虽然你可以输入"po self",除非self是Objective-C类型,你几乎可以看到同样的事情"p self "甚至"框架变量自我"会告诉你 - 这完全基于LLDB数据格式化机制.如果你想挂钩来自定义Swift对象的外观,那么必须参考:http://lldb.llvm.org/varformats.html

  • 令人讨厌的是,最终的Xcode 6已经发布,他们无法在调试过程中实现基本功能来观察任何变量的值. (4认同)