一尘不染

迅速将LLDB中的po

swift

如何在带有LLDB的Swift App中绘制变量的值?

早先就像 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(     
    ^

阅读 252

收藏
2020-07-07

共1个答案

一尘不染

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

(lldb)框架变量-L self

您可能会看不到它的位置。值得提交错误报告,仅用于跟踪您的特定再现案例

无论如何,要解决大部分问题。在Swift中,没有像ObjC这样的语言认可的“打印描述”机制,因此,尽管您可以键入“ po
self”,除非self是Objective-C类型,您几乎会看到与“ p self”相同的内容甚至“帧变量self”会告诉您-
这完全基于LLDB数据格式化程序机制。如果您想了解其中的内容以自定义Swift对象的外观,则必须参考:http
//lldb.llvm.org/varformats.html
2020-07-07