Ошибка Xcode lldb: невозможно распечатать переменную Swift - вместо этого получить $$ __ lldb_injected_self. $__ lldb_wrapped_expr_x "

Иногда при попытке распечатать переменную в отладчике отображается следующее сообщение об ошибке:

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), но, возможно, кто-то знает обходной путь, который можно использовать, пока эта ошибка не будет исправлена?

Ответ 1

В качестве обходного пути вы можете распечатать его в отладчике lldb, используя:

frame variable variablename

Также возможно использование укороченного синтаксиса для более быстрого набора

fr v variablename

Начиная с XCode 10.2 поддерживается еще более простой синтаксис lldb:

v variable

Обновление - новые обходные пути:

Адрес стека печати:

fr v -L variablename

po как в переменном кадре стека. свойство

 fr v -o variablename.property

Стремительно, как p

e unsafeBitCast(address, to: ClassName.self)

Я бы оценил отчеты, что действительно полезно и работает. Благодаря.

Более подробную информацию об этом типе возможностей можно найти здесь:https://developer.apple.com/library/content/documentation/General/Conceptual/lldb-guide/chapters/C5-Examining-The-Call-Stack.html