如何在带有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(
^
如何在带有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(
^
这个错误听起来可能是因为Drawer没有告诉LLDB在哪里找到你的self
个对象.鉴于Swift的性质,LLDB需要知道self的类型,以便能够在本地范围内注入表达式.
(lldb) frame variable -L self
你可能看不到它的位置.值得填写一份缺陷报告,只是为了追踪你的repro个具体 case .
不管怎样,我想谈谈你的大部分问题.在Swift中,没有像ObjC那样的语言认可的"打印描述"机制,因此,尽管您可以键入po self
,除非self是Objective-C类型,否则您将看到与"p self"甚至"帧变量self"所告诉您的几乎相同的事情——这完全基于LLDB数据格式化程序机制.如果你想用它来定制你的Swift对象的外观,必须参考:http://lldb.llvm.org/varformats.html