Я перебираю некоторый код Swift в XCode и хотел бы посмотреть значения. Следуя совету во многих ответах здесь (например, этот ), я могу добавить выражение в окно локальных переменных.
Точка останова, на которой я нахожусь, является последней строкой этого фрагмента из библиотеки Starscream ( daltoniam ), которую я включаю в качестве модуля.
for i in 0..<dataLength {
buffer[offset] = data[i] ^ maskKey[i % MemoryLayout<UInt32>.size]
offset += 1
}
var total = 0
Я добавил два выражения для просмотра:
buffer[0]
и
MemoryLayout<UInt32>.size
Для обоих значений я вижу "недопустимое выражение":
Эти выражения явно не являются недействительными, если бы они были кодом, который вызвал бы исключение, когда они встречались, выполняя предыдущие несколько строк. Что мне не хватает? Как я должен смотреть и не получить «недопустимое выражение»
N.B. Если я вызываю p buffer[0]
из приглашения lldb, я получаю загадочную ошибку:
(lldb) p буфер [0]
ошибка: предупреждение:: 12: 9: предупреждение: инициализация переменной
'$ __ lldb_error_result' никогда не использовался; рассмотрите возможность замены присвоением '_'
или удаляя его
var $ __ lldb_error_result = __lldb_tmp_error
~~~~ ^ ~~~~~~~~~~~~~~~~~~~
_
ошибка:: 19: 5: ошибка: значение типа 'WebSocket' не имеет члена
'$ __ lldb_wrapped_expr_72'
$ __ lldb_injected_self. $ __ lldb_wrapped_expr_72 (
^ ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
Я попытался изменить подфайл (согласно ответу Джима ), чтобы он явно получил код отладки:
pod 'Starscream', '~> 3.0.6', :configuration => 'Debug'
и я даже дошел до удаления модулей, клонирования Starscream и включения исходного кода в качестве подпроекта. Я все еще получаю ту же ошибку.