2016-06-17 6 views
71

Ничего не распечатывается из NSLog на Xcode 8.0 beta (8S128d). printf неизменнаiOS 10 не печатает NSLogs

Вот мой код:

NSLog(@"hello from NSLog"); 
printf("hello from printf"); 

Вот выход на IOS 9 Simulator:

2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog 
hello from printf 

Вот вывод на IOS 10 Simulator:

hello from printf 
+0

У меня была аналогичная проблема. Но в iOS 8.1, Xcode 8. Я проверил каждый ответ здесь. Оказывается, я делал все правильно. Ничего действительно не помогло. Итак, я выключил устройство и включил его. Оно работает. Я написал этот комментарий здесь, чтобы он помог другим, столкнувшимся с подобной проблемой. – KrishnaCA

ответ

26

Если вы проверьте Xcode 8 beta release notes, вы обнаружите, что он говорит:

При отладке приложения, запущенного на симуляторе, журналы могут не отображаться в консоли. Обход проблемы: используйте команду +/в Simulator.app, чтобы открыть системный журнал в приложении консоли, чтобы просмотреть NSLogs. (26457535)

+9

Я не вижу выхода NSLog на реальном устройстве iOS 10.Если вы используете настоящие устройства, вы можете открыть окно «Устройства» (Shift + Command + 2) и просмотреть журналы устройств там, но трудно просмотреть отладочный журнал приложений, поскольку консоль показывает все журналы из системы и приложений. – kientux

+5

Большое спасибо вам! И спасибо за это. Apple: -p – malhal

5

Я не вижу выход NSLog в реальном устройстве iOS 10. Если вы используете реальные устройства, вы можете открыть окно «Устройства» из Xcode (Shift + Command + 2) и посмотреть журналы устройств там, но трудно просматривать журналы вашего приложения, потому что в консоли отображаются журналы из системы и всех приложений.

(я использую Xcode 7, так что это, возможно, не проблема Xcode, но IOS 10 проблема)

+0

Я не вижу NSLogs для своего приложения в окне устройств под iOS 10 GM ... у вас такая же проблема? – TahoeWolverine

+0

Я могу видеть журналы в Xcode 7 с iOS 10 GM, больше не нужно открывать окна устройств. – kientux

+1

Я не говорю о запуске из Xcode, хотя речь идет о журналах, которые печатаются из развернутого приложения. – TahoeWolverine

208

Это может быть, что вы добавили свойство «OS_ACTIVITY_MODE»: «выключить» в переменных окружения Scheme (скрыть Вывода ОС от симулятора) и забыл об этом, а теперь работает на реальном устройстве.

В Xcode 8:

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables 

добавить OS_ACTIVITY_MODE Только и проверить его (Не добавляйте значение)

enter image description here

enter image description here

Резюме: Это ошибка Xcode 8 + iOS10, мы можем решить это следующим образом:

  • При использовании симулятора добавьте имя «OS_ACTIVITY_MODE» и значение «disable» и проверьте его.

  • Если на реальном устройстве добавьте только «OS_ACTIVITY_MODE» и проверьте его (не добавляйте значение). Вы увидите NSLog в консоли Xcode8.

+4

> «Не добавляйте значение» Я установил его «отключить», и он работает! Пустое поле не работает для меня. – faviomob

+0

Вы уверены, что это работает, когда реальная отладка устройства iphone, а не симулятор ? Если я установил его «отключить», консоль не сможет NSLog при реальной отладки iphone. – user6833743

+0

работает только в симуляторе ... – faviomob

9

в NSLog или печать фактически выполняется, но скрыт среди многих других выходов консоли отладки для решения этой проблемы Open Xcode8:

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables 

надстройки «OS_ACTIVITY_MODE» и установите значение на «отключить "и проверьте это.

нажмите близко

enter image description here enter image description here

+0

Это не работает для меня. NSLogs не отображаются для развернутых приложений. Я использую xcode 8.1 (работает на Mac 10.11) с устройством iOS 10. – mobjug

+3

снимите OS_ACTIVITY_MODE, показывая debug NSlog – vualoaithu

+15

Это решение скроет все NSLog, начиная с Xcode 9. Чтобы сохранить NSLog, замените 'disable' на' default'. –

1

Я использую Xcode 8, поэтому я также столкнулся с той же проблемой. И я решил эту проблему, добавив value = disable на симулятор, но на реальной машине я не добавляю значение.

+1

У меня возникли проблемы с Xcode 9. Я вставил аргумент: OS_ACTIVITY_MODE, но, похоже, не работает ... –

+0

Я решил удалить OS_ACTIVITY_MODE :) –

+2

Это решение скроет все NSLog, начиная с Xcode 9. Чтобы сохранить NSLog, замените 'disable' на' default'. –

4

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

enter image description here

+0

Также можно активировать консоль с помощью Shift + ⌘ + C' Xcode версии 8.3.3 – DJ2

4

Хммм ... похоже на имущество "OS_ACTIVITY_MODE": "отключить" МЕШАЕТ NSLog показ в журнале Xcode 9.

Устранение этого значения в моей схеме восстановило мои журналы.

0

accepted answer Первоначально дал мне способ отобразить вывод сообщений NSLog, но он больше не работал после того, как я обновился до Xcode 9.1 + iOS 11.1. Однако я смог отображать сообщения Debug еще раз, используя приложение Console, включив Simulator (see Lucas' answer).

В приложении «Консоль» я выбрал Include Debug Messages под номером Product -> Scheme. Мне также пришлось снять выделение Include Info Messages, чтобы консоль не была завалена системными сообщениями.

0

Для всех, кто приходит на это в будущем. Причина, по которой NSLog не печатает в syslog в iOS 10, а iOS 11 - из-за перехода Apple на Unified Logging.

Вы можете увидеть WWDC говорить об этом здесь: https://developer.apple.com/videos/play/wwdc2016/721/

Документация здесь: https://developer.apple.com/documentation/os/logging

С 10 по вам следует использовать os_log вместо NSLog.

Как найти журналы на диске: https://www.blackbagtech.com/blog/2017/09/22/accessing-unified-logs-image/

Суммируя, журналы расположены в /var/db/diagnostics, которые можно найти в виртуальной машине на /Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/

Копирование всех элементов внутри diagnostics и uuidtext в одну папку (не включайте диагностику папок или uuidtext только то, что внутри).

Переименовать эту папку foldername.xarchive.

Откройте его в Console.app или использовать OSX Util log: log show <path to archive> --info --predicate <options>