有时,当尝试在调试器中打印出变量时,会显示以下错误消息:
error: warning: <EXPR>:12:9: warning: initialization of variable '$__lldb_error_result' was never used; consider replacing with assignment to '_' or removing it var $__lldb_error_result = __lldb_tmp_error ~~~~^~~~~~~~~~~~~~~~~~~~ _ error: <EXPR>:18:5: error: use of unresolved identifier '$__lldb_injected_self' $__lldb_injected_self.$__lldb_wrapped_expr_120( ^~~~~~~~~~~~~~~~~~~~~
这是一个已知的lldb错误(https://bugs.swift.org/browse/SR-6156),但是也许有人知道在该错误修复之前可以使用的解决方法?
lldb
作为解决方法,您可以lldb使用以下命令在调试器中打印它:
frame variable variablename
也可以使用缩短的语法来加快键入速度
fr v variablename
从XCode 10.2开始 ,lldb支持更简单的语法:
v variable
更新 -新的解决方法:
打印堆栈地址:
v -L variablename
po 就像在堆栈框架上的variable.property
po
v -o variablename.property
像雨燕一样 p
p
e unsafeBitCast(address, to: ClassName.self)
UPDATE2 - 新的解决方法 适用于雨燕类是objc类的包装。
例:
v response (HTTPURLResponse) response = 0x0000000283ba7640 {
如果v可行^:
v
e -l objc -- (int)[0x0000000283ba7640 statusCode] (int) $2 = 404
我希望您能 收到 一些 报告, 这些 报告 实际上是有帮助的并且有效。谢谢。
可以在以下位置找到有关此类功能的更多信息:https : //developer.apple.com/library/content/documentation/General/Conceptual/lldb- guide/chapters/C5-Examining-The-Call- Stack.html