Скрыть странные нежелательные журналы Xcode

При использовании Xcode 8+ и создании нового пустого проекта при запуске приложения появляются следующие журналы:

2016-06-13 16:33:34.406093 TestiOS10[8209:100611] bundleid: com.appc.TestiOS10, enable_level: 0, persist_level: 0, propagate_with_activity: 0
2016-06-13 16:33:34.406323 TestiOS10[8209:100607] Created DB, header sequence number = 248
2016-06-13 16:33:34.409564 TestiOS10[8209:100611] subsystem: com.apple.UIKit, category: HIDEvents, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-06-13 16:33:34.504117 TestiOS10[8209:100607] Created DB, header sequence number = 248
2016-06-13 16:33:34.548023 TestiOS10[8209:100607] subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-06-13 16:33:34.568458 TestiOS10[8209:100608] subsystem: com.apple.FrontBoard, category: Common, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0

Может быть, кто-то уже нашел конфигурацию для этого?


person Hans Knöchel    schedule 13.06.2016    source источник
comment
Кажется, это просто отладочная информация журнала, оставшаяся от разработки. Расследование ...   -  person JAL    schedule 14.06.2016
comment
Вы отключили использование API динамического компоновщика в xcode?   -  person Teja Nandamuri    schedule 21.06.2016
comment
Не работает для меня в Xcode 8, похоже, это решение работает только для бета-версии Xcode 8.   -  person Badal Shah    schedule 25.09.2016
comment
У меня была эта проблема с Xcode 8.2.1 на El Capitan. Обновление до macOS Sierra устранило проблему.   -  person hwaxxer    schedule 26.01.2017
comment
Я все еще вижу проблему в Xcode 9.3, я отправил Apple Bug № 34767176 (Xcode 9 отображает сообщения отладочной печати системной инфраструктуры), которая является дубликатом открытой ошибки № 32256894. Отправьте дубликат ошибки в Apple: bugreport.apple.com/web   -  person Paul Solt    schedule 08.05.2018
comment
Прочтите эту статью mightytechno.com/x-code-disable-annoying-system- журналы   -  person Ishan Fernando    schedule 16.02.2019
comment
@IshanFernando, эта ссылка - 404, но вот ее копия: medium.com/@ishanfx/   -  person Syclone0044    schedule 11.10.2020


Ответы (14)


Попробуй это:

1 - В меню Xcode откройте: ProductSchemeEdit Scheme

2. В переменных среды установите OS_ACTIVITY_MODE = disable

Скриншот

person iDevzilla    schedule 13.09.2016
comment
Он также работает с выпуском Xcode 8.0, поэтому я предлагаю это решение. - person nadein; 14.09.2016
comment
Это лучшее решение, которое я когда-либо видел, надеюсь, это увидит больше людей. Это лишнее дерьмо с лесозаготовками сводило меня с ума !! Приветствую за решение !! - person AdamM; 14.09.2016
comment
Для тех, кто задается вопросом, как попасть на этот экран, вам нужно перейти в Product ›Scheme› Edit Scheme или Cmd + ‹ - person chrishale; 14.09.2016
comment
@iDevzilla, с этим решением есть некоторая проблема, оно удаляет некоторые важные вещи из журнала при использовании реального устройства, например, данные, записанные самим. Пожалуйста, просмотрите его еще раз, я не уверен, что это самое идеальное решение. - person Itai Spector; 15.09.2016
comment
@ItaiSpector true, но вы можете создать другую схему для запуска на устройстве / симуляторе. Пока что это единственное известное мне решение, которое удаляет бесполезный журнал при работе на симуляторе. - person iDevzilla; 15.09.2016
comment
К сожалению, эта опция скрывает для меня все NSLog с реального устройства ... - person Dmitry Isaev; 16.09.2016
comment
Это решение также скрывает некоторые важные записи в симуляторе. Например, я пропустил следующее предупреждение. Это приложение вылетело из строя из-за попытки доступа к конфиденциальным данным без описания использования. пока я снова не включил OS_ACTIVITY_MODE - person AirXygène; 22.09.2016
comment
@ AirXygène А что насчет значений release или stream? Смотрите мой ответ ниже. - person BaseZen; 23.09.2016
comment
@BaseZen благодарит за предложение, но мне это не удалось. - person AirXygène; 23.09.2016
comment
Проблема только в Симуляторе. Лично я не считаю, что добавление переменной окружения - хорошая идея, потому что она также скрывает важные журналы, такие как проблемы с ограничениями макета и, среди прочего, пример @ AirXygène. В симуляторе вы также можете нажать CMD + /, чтобы открыть консоль, она выдаст вам старомодные журналы. Надеюсь, Apple исправит эту проблему в Xcode, хотя, учитывая количество голосов за, это вызывает большой интерес;) - person Bocaxica; 12.10.2016
comment
Но как отключить то же самое на устройстве? Я имею в виду журналы с реального iPhone или iPad, которые отображаются в меню «Окно» - ›« Устройства »? Очень часто нам нужно просмотреть журналы приложения для распространения / производства, установленного на устройстве (режим без отладки). - person Prabu Arumugam; 17.10.2016
comment
Нет в 8.1 GM seed, если мы запускаем на симуляторе, то все равно приходят системные журналы - person Abhishek Thapliyal; 28.10.2016
comment
Я тестировал здесь (я использую версию 8.1 (8B62)) сейчас, а не GM, и флаг больше не нужен. - person iDevzilla; 28.10.2016
comment
@iDevzilla, вы используете macOS Sierra? Я думаю, что для исправления может потребоваться Xcode 8.1 и Sierra, потому что я удалил эту опцию и все еще наблюдаю чрезмерное ведение журнала при запуске Xcode 8.1. на Эль-Капитане. - person Geoff Hackworth; 31.10.2016
comment
да. Я использую Sierra. Интересно, что ОС меняет это поведение. - person iDevzilla; 01.11.2016
comment
Скрывает ли он также ошибки автоматического макета или это какое-то странное явление, которое происходит только на компьютере моего клиента? У него ошибка автоматического макета и экран, полный этих предупреждений - person Lucas van Dongen; 08.11.2016
comment
В Sierra и Xcode 8.1 логи были удалены. Поэтому лучше удалить эти флаги, так как они могут помешать системе генерировать исключения во время отладки. - person Marco Pappalardo; 28.04.2017
comment
Это решение скроет весь NSLog, начиная с Xcode 9. Чтобы сохранить NSLog, замените disable на default. - person Cœur; 27.09.2017
comment
Я получал всевозможные журналы, которые мне не нужны, попробовал этот метод, который останавливает работу NSLog. Удалил var, и теперь NSLog вернулся, и лишние журналы, которые мне не нужны, тоже прекратились. Должно быть, кое-что прояснило в xCode 9. В любом случае, ура :) - person GeoffCoope; 17.10.2017
comment
OS_ACTIVITY_MODE = отключить, вызвавшие проблемы с моим упаковщиком при попытке запустить на устройстве. но не сначала. только после разработки моего приложения еще несколько часов. В этот момент я получал ошибку jsbundle (по сути, устройство не взаимодействовало с упаковщиком). Тот факт, что это обнаружилось только позже, ОЧЕНЬ сложно понять, что эта переменная env была проблемой. - person roocell; 22.10.2017
comment
Я все еще вижу проблему в Xcode 9.3, я отправил Apple Bug № 34767176 (Xcode 9 отображает сообщения отладочной печати системной инфраструктуры), которая является дубликатом открытой ошибки № 32256894. Отправьте дубликат ошибки в Apple: bugreport.apple.com/web - person Paul Solt; 08.05.2018
comment
Это сработало после того, как я попробовал это во второй раз, как указал другой пользователь в комментарии к другому ответу. Странный. - person Tuan Anh Vu; 28.11.2018
comment
Обратите внимание, что это нарушает указатели на реальных устройствах: stackoverflow.com/a/57187309/2982854 - person Tim; 24.09.2020
comment
лучше установить его по умолчанию вместо «отключить», настройка «включить» будет отображать каждый журнал, но отключение также отключит каждый журнал (даже полезные журналы из модулей), поэтому лучше использовать «по умолчанию», так как это будет только скрыть бесполезные журналы - person Abhishek Maurya; 10.10.2020

Основываясь на исходном твите от @rustyshelf и иллюстрированном ответе от iDevzilla, вот решение, которое заставляет замолчать шум от симулятора без отключения вывода NSLog с устройства.

  1. В разделе Продукт> Схема> Изменить схему ...> Выполнить (Отладка) установите для переменной среды OS_ACTIVITY_MODE значение $ {DEBUG_ACTIVITY_MODE}, чтобы это выглядело следующим образом:

введите описание изображения здесь

  1. Перейдите в настройки сборки проекта и нажмите +, чтобы добавить пользовательский параметр с именем DEBUG_ACTIVITY_MODE. Разверните этот параметр и щелкните значок «+» рядом с полем «Отладка», чтобы добавить значение, зависящее от платформы. Выберите раскрывающийся список и измените его на «Any iOS Simulator». Затем установите для него значение «отключить», чтобы оно выглядело так:

введите описание изображения здесь

person cduhn    schedule 23.09.2016
comment
Не работает в версии 8.0 (8A218a). Настройки схемы можно увидеть здесь, а настройки сборки можно увидеть здесь. - person NSNoob; 02.11.2016
comment
@ комментарий выше, попробуйте еще раз, я тоже использую Xcode 8.0 (8A218a), и он работает нормально. - person Rikco; 03.11.2016
comment
@NSNoob, выберите свою цель и проверьте ее настройки сборки, чтобы убедиться, что вы не переопределяете переменную DEBUG_ACTIVITY_MODE на этом уровне. Также убедитесь, что вы отредактировали правильную схему для цели, которую вы запускаете. - person cduhn; 04.11.2016
comment
@NSNoob убедитесь, что у вас нет пробела в переменной env. - person sbarow; 18.11.2016
comment
Жаль, что это не принятый ответ, и очень плохо, что этот ответ теряет количество голосов. Намного лучше ответить IMHO, поскольку он отключил OS_ACTIVITY_MODE только для сборок DEBUG на симуляторе. - person Swany; 29.11.2016
comment
Это не сработало для меня, как и ответ, получивший наибольшее количество голосов. Использование Xcode 8.2.1 в OS X 10.11.6 El Capitan. Но что действительно сработало, так это комбинация этого ответа и ответа BaseZen с использованием OS_ACTIVITY_DT_MODE вместо OS_ACTIVITY_MODE. (И неожиданно для меня как минимум оба NO и disable отключили безудержное ведение журнала.) - person RenniePet; 14.03.2017
comment
@RenniePet, это именно то, что помогло мне. Спасибо! - person Misha; 28.05.2017
comment
Мне также пришлось использовать OS_ACTIVITY_DT_MODE вместо OS_ACTIVITY_MODE, чтобы он работал. Использование XCode 8.3.3 в OSX Sierra 10.12.6 - person keronsen; 16.08.2017
comment
Это решение скроет весь NSLog, начиная с Xcode 9. Чтобы сохранить NSLog, замените disable на default. - person Cœur; 27.09.2017
comment
Как отфильтровать шум теперь, когда мне пришлось вернуться и заменить disable на значение по умолчанию? Я вижу свои операторы NSLog в консоли, но снова слышу шум. - person Alyoshak; 14.11.2018
comment
Для меня это отключает вывод NSLog на симуляторе iOS, я не вижу, что это отличается от простого использования disable в качестве значения. default также отключает журналы NSLog ... - person szx; 23.11.2018

OS_ACTIVITY_MODE у меня не сработало (это могло быть из-за того, что я набрал disable как disabled, но разве это не более естественно?!?), Или, по крайней мере, не помешало многому сообщений. Итак, вот реальная проблема с переменными окружения.

https://llvm.org/svn/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp

lldb_private::Error
PlatformDarwin::LaunchProcess(lldb_private::ProcessLaunchInfo &launch_info) {
  // Starting in Fall 2016 OSes, NSLog messages only get mirrored to stderr
  // if the OS_ACTIVITY_DT_MODE environment variable is set.  (It doesn't
  // require any specific value; rather, it just needs to exist).
  // We will set it here as long as the IDE_DISABLED_OS_ACTIVITY_DT_MODE flag
  // is not set.  Xcode makes use of IDE_DISABLED_OS_ACTIVITY_DT_MODE to tell
  // LLDB *not* to muck with the OS_ACTIVITY_DT_MODE flag when they
  // specifically want it unset.
  const char *disable_env_var = "IDE_DISABLED_OS_ACTIVITY_DT_MODE";
  auto &env_vars = launch_info.GetEnvironmentEntries();
  if (!env_vars.ContainsEnvironmentVariable(disable_env_var)) {
    // We want to make sure that OS_ACTIVITY_DT_MODE is set so that
    // we get os_log and NSLog messages mirrored to the target process
    // stderr.
    if (!env_vars.ContainsEnvironmentVariable("OS_ACTIVITY_DT_MODE"))
      env_vars.AppendArgument(llvm::StringRef("OS_ACTIVITY_DT_MODE=enable"));
  }

  // Let our parent class do the real launching.
  return PlatformPOSIX::LaunchProcess(launch_info);
}

Таким образом, установка OS_ACTIVITY_DT_MODE на «NO» в переменных среды (метод графического интерфейса, описанный на скриншоте схем в основном ответе) заставляет меня работать.

Поскольку NSLog является свалкой системных сообщений, ошибок и вашей собственной отладки: в любом случае, вероятно, потребуется реальный подход к ведению журнала, например https://github.com/fpillet/NSLogger.

OR

Выпейте новый Kool-Aid: http://asciiwwdc.com/2016/sessions/721 https://developer.apple.com/videos/play/wwdc2016/721/ Неудивительно, что после капитальный ремонт всего API журналирования.

ДОБАВЛЕНИЕ

В любом случае NSLog - это просто прокладка:

https://developer.apple.com/library/content/releasenotes/Miscellaneous/RN-Foundation-OSX10.12/

NSLog / CFLog

NSLog теперь является просто прокладкой для os_log в большинстве случаев.

Только теперь имеет смысл процитировать источник для другой переменной env. Совершенно разрозненное место, на этот раз изнутри Apple. Не уверен, почему они перекрываются. [Некорректный комментарий о NSLog удален]

[Отредактировано 22 сентября]: Интересно, что "release" и "stream" делают иначе, чем "debug". Недостаточно источника.

https://github.com/macosforge/libdisc8c/blobdisc8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c08 / а>

e = getenv("OS_ACTIVITY_MODE");
if (e) {
    if (strcmp(e, "release") == 0) {
        mode = voucher_activity_mode_release;
    } else if (strcmp(e, "debug") == 0) {
        mode = voucher_activity_mode_debug;
    } else if (strcmp(e, "stream") == 0) {
        mode = voucher_activity_mode_stream;
    } else if (strcmp(e, "disable") == 0) {
        mode = voucher_activity_mode_disable;
    }
}
person BaseZen    schedule 19.09.2016
comment
Всегда приятно видеть ответ, в котором указаны причины и предыстория, а не просто быстрое решение. - person jscs; 22.09.2016
comment
Работал над этим ответом, используя OS_ACTIVITY_DT_MODE = NO - person Almas Adilbek; 28.09.2016
comment
Это приводит к другому поведению, чем OS_ACTIVITY_MODE = disable? Есть ли причина предпочесть это решение? - person n8gray; 04.10.2016
comment
Это не. Он все скрывает. - person durazno; 14.10.2016
comment
«В любом случае, вероятно, потребуется настоящий подход к лесозаготовкам…» Серьезно? os_log - ЭТО ИДЕАЛЬНОЕ решение для ведения журналов… просто потому, что вы не хотите погружаться в подробности, не значит, что это плохо! - person Frizlab; 22.10.2016
comment
@Frizlab Да, я упоминаю и то, и другое в своем посте. См. Операционную ... Я неофициально называю os_log новым Kool Aid. - person BaseZen; 25.10.2016
comment
Мое тестирование, похоже, указывает на то, что при использовании OS_ACTIVITY_DT_MODE, что и NO, и disable отключают безудержное ведение журнала. - person RenniePet; 15.03.2017
comment
release, info, default покажет NSLog в Xcode 9. debug, stream, disable скроет NSLog в Xcode 9. - person Cœur; 27.09.2017
comment
OMG, кто делает не тип отключен ?? Спасибо за указание на это! - person LinusGeffarth; 29.09.2017

Ответ дал мне твит - https://twitter.com/rustyshelf/status/775505191160328194

Чтобы симулятор Xcode 8 iOS не регистрировался как сумасшедший, установите переменную среды OS_ACTIVITY_MODE = disable в вашей схеме отладки.

Это сработало.

person Peter Smith    schedule 13.09.2016
comment
Как уже было сказано: OS_ACTIVITY_MODE = disable отключает все остальные журналы с помощью NSLog. - person dzensik; 27.09.2016
comment
Это решение скроет весь NSLog, начиная с Xcode 9. Чтобы сохранить NSLog, замените disable на default. - person Cœur; 27.09.2017

Пожалуйста, найдите следующие шаги.

  1. Выберите Продукт => Схема => Изменить схему или используйте ярлык: CMD + <
  2. Выберите вариант Run слева.
  3. В разделе «Переменные среды» добавьте переменную OS_ACTIVITY_MODE = disable.

Для получения дополнительной информации, пожалуйста, найдите изображение в формате GIF ниже.

Изменить схему

person Ramkrishna Sharma    schedule 07.11.2016
comment
Подождите .... На втором запуске все заработало. Престижность для Gif-видео. Лучшие ответы всегда внизу! - person Sentry.co; 02.03.2017
comment
Это решение скроет весь NSLog, начиная с Xcode 9. Чтобы сохранить NSLog, замените disable на default. - person Cœur; 27.09.2017
comment
@ Cœur, ты спаситель, Все говорили, что нужно отключить, но ты дал мне лучшие ответы, Большое спасибо, чувак. - person Abhishek Maurya; 03.07.2020

Это все еще не исправлено в Xcode версии 8.0 beta 2 (8S162m) для меня, и дополнительные журналы также появляются в консоли Xcode

** РЕДАКТИРОВАТЬ 1/8/16: это подтверждено в примечаниях к выпуску Xcode 8 Beta. 4 (8S188o), поскольку проблема не устранена.

Известные проблемы в Xcode 8 beta 4 - IDE

Отладка

• Консоль отладки Xcode показывает дополнительные журналы из системных фреймворков при отладке приложений в симуляторе. (27331147, 26652255)

Предположительно это будет решено выпуском GM. До тех пор терпение, и хотя это не идеально, но обходной путь, который я использую, ниже ...

Как и в предыдущем ответе, мне нужно:

  • префикс моих журналов печати каким-либо специальным символом (например, * или ^ или! и т. д.)

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

console

person Pez    schedule 06.07.2016
comment
Я могу подтвердить, что эта проблема с ведением журнала все еще присутствует в бета-версии 2 - person benrudhart; 07.07.2016
comment
Добавил скриншот, теперь у меня достаточно привилегий. Я чувствую, что в отличие от других ответов, нет необходимости запускать общесистемные журналы, когда есть работа непосредственно в Xcode для тех, кто испытывает ту же проблему в консоли Xcode и просто хочет просмотреть, что они печатают в консоли Xcode . - person Pez; 07.07.2016
comment
Есть ли способ получить уведомление о выходе новой версии бета-версии Xcode (например, подписка по электронной почте)? Все еще работал с бета-версией 0 и не замечал обновлений, пока не увидел этот пост @benrudhart - person SimplyLearning; 22.07.2016
comment
@SimplyLearning вы найдете эту информацию по всему твиттеру. Но вы можете посетить этот официальный веб-сайт Apple: developer.apple.com/news или их ленту новостей чтобы получать обновления при их публикации: developer.apple.com/news/rss/news. rss Кстати: похоже, это все еще проблема в Xcode Beta 3. - person benrudhart; 22.07.2016
comment
Только что получил Xcode 8 GM, и проблема все еще сохраняется. Очень назойливый!! - person AdamM; 08.09.2016
comment
Только что загрузил Xcode версии 8.0 (8A218a) из App Store. Проблема все еще существует. - person Statik; 14.09.2016
comment
Просто смешно. Все еще есть в финальной версии MAS. - person Shai Mishali; 15.09.2016
comment
Этот обходной путь хорош. Но обратите внимание, в последнее время NSLog обрезается XCode, если он слишком длинный. - person GeneCode; 14.03.2017
comment
Мы используем префикс тега для фильтрации. Некоторые проблемы: В нескольких строках будет отображаться только первая. При использовании lldb для отладки необходимо переключить фильтрацию. На самом деле очень грустно, что на сегодняшний день консоль крайне ограничена. У нас есть приложение для приличной фильтрации, но нам нужно копировать / вставлять из консоли. Как грустно. - person bauerMusic; 04.12.2018

Мое решение - использовать команду отладчика и / или сообщение журнала в точках останова.

введите описание изображения здесь

И измените вывод консоли с Весь вывод на Вывод отладчика, например

введите здесь описание изображения

person mrahmiao    schedule 07.07.2016

Хорошо. Похоже, вокруг этого много шума, поэтому я дам вам способ сохранить его, не используя эту схему. Я обращусь к симулятору iOS специально, но это также может потребоваться применить и к симулятору TV, который находится в другом каталоге.

Проблема, которая вызывает все это, - это списки, расположенные в каталоге Xcode. При запуске Sim запускается процесс configd_sim, который считывает списки и печатает отладочную информацию, если в списках указано, что они должны быть зарегистрированы.

Листы расположены здесь:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Preferences/Logging/Subsystems

Если вы играете с бета-версией, обратите внимание, что каталог будет другим.

В этом каталоге вы увидите множество списков. Теперь соберите и запустите приложение и просмотрите журналы. Вы ищете контент, за которым сразу следует часть подсистема:. Имя, следующее сразу за этим, представляет соответствующий проблемный список.

введите здесь описание изображения

Оттуда либо измените список, чтобы удалить ключ / значение [Уровень] отладки, который является словарем, содержащим ключ / значение "Enable" => "Default" ... или просто удалите список. Обратите внимание, что для выполнения любого из этих действий вам необходимо иметь root-права, поскольку они находятся в приложении Xcode.

команда plutil -p также может быть вам полезна. т.е.

plutil -p /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/System/Library/Preferences/Logging/Subsystems/com.apple.BackBoardServices.fence.plist

Это дало мне один из проблемных списков, который содержал:

{ "DEFAULT-OPTIONS" => { "Level" => { "Enable" => "Default" }}}

Удачи :]

person Sozin's Comet    schedule 18.09.2016
comment
Я заархивировал, а затем удалил, если мне нужно восстановить. - person dandan78; 21.09.2016
comment
Я обнаружил, что это не может заглушить большой сетевой код, вероятно, из-за отсутствия имени подсистемы: 2016-09-23 15:09:21.354686 ProductName[8823:191206][] tcp_connection_start 3 starting - person BaseZen; 23.09.2016
comment
@BaseZen К сожалению, я ответил только на вопрос OP, который не содержал никаких проблем с журналированием tcp. Вы можете создать новое сообщение SO, если вам нужна помощь в решении этой проблемы. - person Sozin's Comet; 24.09.2016

Это связано с известной проблемой с ведением журнала, обнаруженной в примечаниях к выпуску бета-версии Xcode 8 (также спросил у инженера WWDC).

При отладке приложений WatchOS в симуляторе Watch ОС может производить чрезмерное количество бесполезных журналов. (26652255)

В настоящее время обходного пути нет, вы должны дождаться новой версии Xcode.

РЕДАКТИРОВАТЬ 7/5/16: это предположительно исправлено с Xcode 8 Beta 2:

Решено в Xcode 8 beta 2 - IDE

Отладка

  • При отладке приложения на симуляторе отображаются журналы. (26457535)

Примечания к выпуску Xcode 8 Beta 2

person JAL    schedule 14.06.2016
comment
Я тоже так думал, но я не использую ни приложение watchOS, ни симулятор watchOS. Но это все равно может случиться и с другими симами. На данный момент откладываем и посмотрим, исправит ли определенная бета-версия Xcode 8 это в течение следующих недель / месяцев. - person Hans Knöchel; 14.06.2016
comment
@HansKnoechel тоже нет, но я могу подтвердить, что эта проблема возникает с любым приложением. Никаких официальных сообщений от Apple, кроме примечаний к выпуску и некоторого обсуждения на WWDC. - person JAL; 14.06.2016
comment
спасибо, и здесь! Мы должны поговорить об этом завтра во время WWDC, хе-хе :-) - person Hans Knöchel; 14.06.2016
comment
Также происходит с моим симулятором iPhone 5s, наверное, со всеми симуляторами. - person SimplGy; 23.06.2016
comment
Мне не удалось получить доступ к ссылке в этом ответе, несмотря на то, что я вошел в систему, но эта ссылка работает: adcdownload.apple.com/WWDC_2016/Xcode_8_beta/ - person SimplGy; 23.06.2016
comment
Есть ли способ получить уведомление о выходе новой версии бета-версии Xcode (например, подписка по электронной почте)? Все еще работал с бета-версией 0 и не замечал обновлений, пока не увидел этот пост @mrahmiao - person SimplyLearning; 22.07.2016
comment
@SimplyLearning Новая бета-версия Xcode будет выпущена вместе с бета-версией iOS - person mrahmiao; 31.07.2016
comment
Не зафиксировано и в b6 ни для каких целей. - person Rick; 31.08.2016

Это больше не проблема в xcode 8.1 (протестированная бета-версия 8.1 (8T46g)). Вы можете удалить переменную среды OS_ACTIVITY_MODE из своей схемы.

https://developer.apple.com/go/?id=xcode-8.1-beta-rn

Отладка

• Консоль отладки Xcode больше не показывает дополнительные журналы из системных фреймворков при отладке приложений в симуляторе. (26652255, 27331147)

person mriddle89    schedule 06.10.2016
comment
Я все еще получаю много ложных входов в 8.1. В основном странные соединения с сокетами и tcp. Кто-нибудь еще или только я? - person Jordan Smith; 27.10.2016
comment
Я только что загрузил Xcode 8.1 сегодня (31.10.2016) и все еще вижу некоторые журналы отладки, подобные этой [MC] Reading from private effective user settings., из пустого нового фиктивного проекта. Файл ›Новый› Проект. - person Zhang; 31.10.2016

В Xcode 10 переменная OS_ACTIVITY_MODE со значением disable (или default) также выключает NSLog, несмотря ни на что.

Поэтому, если вы хотите избавиться от шума консоли, но не от собственных журналов, вы можете попробовать старый добрый printf("") вместо NSLog, поскольку на него не влияет OS_ACTIVITY_MODE = disable.

Но лучше ознакомьтесь с новым os_log API здесь.

person Jakub Truhlář    schedule 20.01.2019

Это решение работает для меня:

  1. Запустите приложение в симуляторе
  2. Откройте системный журнал ( + /)

Это сбрасывает все данные отладки, а также ваши NSLogs.

Чтобы отфильтровать только ваши инструкции NSLog:

  1. Добавьте к каждому символу префикса, например: NSLog(@"^ Test Log")
  2. Отфильтруйте результаты с помощью поля поиска в правом верхнем углу, "^" в приведенном выше случае.

Вот что должно получиться:

Скриншот консоли

person psobko    schedule 05.07.2016

Обратите внимание, что для симулятора iOS 14 OS_ACTIVITY_MODE = disable не будет отображать никакие журналы с использованием нового Swift Logger. Вам придется удалить или включить его.

person StackUnderflow    schedule 29.09.2020

Я прочитал все решения, пока ничего не работает, я использую XCODE 12.5 на момент написания этого ответа, это самая неприятная вещь, которую можно увидеть в отладчике с такой кучей / потоком нежелательных сообщений.

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

  1. Нет необходимости использовать какие-либо переменные среды и т. Д., Иначе их использование, как было предложено в предыдущих сообщениях, отключило бы вывод NSLOG, что вам не нужно в таком случае.

  2. Я убедился, что весь мой NSLOG будет содержать строку, которую я буду отслеживать позже, например:

Раньше я делал:

NSLog(@"Hello World");

Теперь я делаю:

NSLog(@"[Admin]: Hello World");

В то время как [Admin] - это имя моей программы (или любая другая строка, которая вам нравится, кроме [Admin]

  1. (Необязательный шаг) или (Проще), я написал функцию для направления (ну, прокси) NSLog в другой глобальный журнал функций, тогда как все мои зарегистрированные будут переходить к этой функции, а затем функция журнала добавит строку [Admin] в исходную строку журнала, а также добавить время ведения журнала и другие элементы, которые мне нужны и т. д. (аналогично WebLogic или любому другому ведению журнала JAVA), это гарантирует, что все журналы будут соответствовать одному стандарту.

  2. ... Вот ядерное оружие за миллион долларов:

Теперь войдите в окно отладчика, внизу вы увидите окно поиска, в котором написано «Фильтр», введите строку (пример; [Admin]), нажмите ENTER, и работа будет выполнена.

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

введите описание изображения здесь

Также полезно, когда вы хотите отфильтровать другие компоненты, например, для сетевого взаимодействия я использую больше строк, которые я могу фильтровать позже.

Другими словами, раздражающие строки журналов, которые не имеют ничего общего с вашим приложением, всегда будут там, но вы решите не видеть их, используя указанную выше команду, которая, я надеюсь, решит проблему.

Надеюсь, хорошего дня всем.

H

person Heider Sati    schedule 04.06.2021