Бета-отладчик Xcode 7 не показывает значения переменной в точке останова для кода Swift
Я попробовал ответы на вопросы здесь, но ни один из них не помог :(
Я установил Xcode 7 beta 5 и отладчик не будет показывать значения переменных при отладке swift-кода. Он прекрасно работает в коде Obj-C.
Я попытался изменить уровень оптимизации компилятора на None, и это не имело никакого эффекта.
![enter image description here]()
Ответы
Ответ 1
Я все еще находил эту проблему в финальной версии XCode 7.0. Оказывается, мой заголовок моста нуждался в обновлении, так как одна из ссылок в нем больше не нужна.
Я нашел это, используя 'po' в отладчике для одной из переменных, например. 'po self.views'. Затем отладчик перечислил все ошибки в заголовочном заголовке для меня. Странный способ выяснить проблему, но она сработала.
EDIT: И на всякий случай выполните чистую сборку после устранения любых проблем.
Ответ 2
Это может быть связано с проблемой в файле моста между Swift и Objective-C, например файлом {projectName} -Bridging-Header.h. Чтобы убедиться в этом:
1- добавить точку останова в месте, которое вы хотите отлаживать.
2- После достижения точки останова напишите команду lldb po на любом объекте в окне вывода отладки xCode. например:
po self.view
Если есть проблема, вы должны увидеть ее в журнале и, надеюсь, вы можете пойти и исправить ее
Ответ 3
Apple исправила эту проблему в Xcode 7 Beta 6
И есть ссылка на проблему от Twitter Developer: https://twittercommunity.com/t/xcode-7-debugger/50792
Ответ 4
В потоке, связанном с @Breek, содержится решение - Twitter опубликовал исправление для этого. Обновление Crashlytics с 3.1.x до 3.2 исправляло отладчик для меня на семена Xcode 7 GM. Если по какой-либо причине вы не можете обновить Crashlytics, вы должны иметь возможность редактировать свои файлы заголовков, как указано в потоке, в качестве временного временного решения; т.е. вместо #import <Fabric/FABAttributes.h>
в crashlytics.h вместо @import Fabric;
.
Ответ 5
Я была такая же проблема. Я решил это по этой ссылке здесь:
Отладчик Swift не показывает значения переменных при импорте инфраструктуры ObjC
Сначала попробуйте переместить в подпапку все .framework, как пишет автор этого поста:
Я получил сообщение от разработчика Apple, в котором сообщалось, что они наблюдали эту проблему и что ее можно исправить, переместив .framework в подпапку проекта. Очевидно, что модуль.. был встроен в каталог. Ошибка появляется, только если файл .framework находится в той же папке, что и файл .xcodeproj aka $ (PROJECT_DIR).
Но в моем случае основной проблемой был фреймворк OpenTok. После того, как я добавлю действие в точку останова
po self
Журнал показывает сообщение:
предупреждение: ошибка Swift в модуле myapp: в Swift возникли фатальные ошибки при создании контекста ast для этого модуля:: 1: 9: примечание: в файле, включенном из: 1: #import "/Users/me/Developer/myapp-ios/Pods/OpenTok/OpenTok.framework/Headers/OpenTok.h"
И, наконец, я добавил эти строки кодов в Podfile
:
post_install do |installer|
'find Pods -regex 'Pods/OpenTok.*\\.h' -print0 | xargs -0 sed -i '' 's/\\(<\\)OpenTok\\/\\(.*\\)\\(>\\)/\\"\\2\\"/''
end
После этого, наконец, pod install
.
Ответ 6
У меня была та же проблема. Причина в том, что я использую Crashlytics, который является областью ObjC.
Попробуйте удалить некоторые из фреймворков ObjC, а затем shift + cmd + k
, чтобы очистить проект и снова его восстановить.
После этого он должен работать.
Ответ 7
Перейти к проекту → Цели → Настройка сборки → Уровень оптимизации → Отладка и заданное значение независимо от того, хотите ли вы
Ответ 8
Удаление Fabric/Crashlytics сделало это для меня. Я могу сказать, что не все импорта ObjC вызывают эту проблему. Я все еще использую некоторые другие в моем проекте Swift, но почему-то Crashlytics вызывает некоторые проблемы в последней бета-версии. У меня также была ошибка компилятора, и мне пришлось отключить биткод для компиляции проекта.