Swift LLBD Message "<Невозможно определить размер байта.>"

У меня довольно неприятная проблема в отладчике Swift, когда я пытаюсь распечатать описание объекта. При попытке печати и объекта, используя команду po или fr v, я получаю сообщения типа

error: <EXPR>:1:1: error: use of unresolved identifier 'self' self ^

или

self = <Unable to determine byte size.>

Что здесь происходит? Существуют ли причины, по которым отладчик не может читать что-то вроде self?

Ответ 1

<Unable to determine byte size>

является (по общему признанию, несколько загадочным) сообщением об ошибке, которое LLDB будет распечатывать, когда оно не понимает тип чего-либо.

Позвольте мне подробнее рассказать. Когда вы вводите выражение или выполняете переменную фрейма, отладчик должен оценить любой предоставленный вами код или искать переменную (ы), которую вы просили.

Чтобы представить результаты этого вам, он также должен понимать тип вещей. Например, Int - это вещь, которая имеет числовое значение, размер которого соответствует размеру указателя на вашем компьютере... (ну, чтобы быть на 100% точным, Int - это вещь, которая имеет член, который имеет числовое значение..., но LLDB реферат, что от вас). Строка - это вещь, которая имеет некоторый текст (опять же, это немного сложнее, но LLDB-тезисы). Одной из вещей, которую нравится отладчику, является "размер байта" типа, как и сколько байтов в памяти занимает этот объект такого типа?

Иногда отладчик не может понять типы, о которых говорят. Когда это происходит, очевидно, что одна из вещей, которые не могут быть определены, - это размер байта. Следовательно, сообщение.

Если вы столкнетесь с ситуациями, когда отладчик не может выводить типы в ваших приложениях, пожалуйста, напишите об ошибках http://bugreport.apple.com

Ответ 2

В моем случае после долгих исследований и тестирования я обнаружил, что сторонние дополнения "Crashlytics" и "TwitterKit" (установленные через cocoapods в моем случае) вызывали эту проблему для меня. После удаления этих библиотек и выполнения чистой сборки, я смог снова использовать LLDB.

См. fooobar.com/questions/293517/...

Ответ 3

Как отметил Scott D, это может быть что-то с Fabric. Если вы используете Fabric, особенно с TwitterKit перейдите в рамки TwitterKit и отредактируйте TwitterKit.h вручную. Замена

#import <TwitterCore/TwitterCore.h>

с

@import TwitterCore;

снова отлаживает отладчик. Пакеты Sidenote: Fabric и Crahlytics обновляются и больше не прерывают отладчик.

EDIT: Щебеты из ткани также были обновлены и начиная с версии 1.12.0 они не нарушают отладчик. Ура!