Как отлаживать расширение приложения для iOS?

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

Возможно ли это с Xcode 9?

Или хоть где-нибудь почитать, может, файл?

Я пошел посмотреть журналы своего устройства в разделе «Устройства и симуляторы», но не смог найти то, что распечатал из расширения приложения iOS.


person pguzman    schedule 29.01.2018    source источник
comment
developer.apple.com/library/content/ документация /   -  person koen    schedule 29.01.2018
comment
@Koen, по-видимому, это не то же самое, что отладка приложения, поэтому у меня это не работает.   -  person pguzman    schedule 30.01.2018


Ответы (4)


Знаю это:

  • В любой момент времени вы можете отлаживать только 1 цель
  • Цель должна быть прикреплена к отладчику Xcode
  • Расширение приложения - это отдельная цель от содержащего приложение (цель)

Решение:

Перейдите в Xcode >> Debug >> Attach to process >> Затем просто выберите цель appExtension

Примечание:

Если вы пытаетесь отладить расширение, которое запускается ОС, вам нужно сделать что-то, чтобы ОС запускала его. Только после этого вы можете прикрепить его к отладчику. Пример: если вы пытаетесь отладить «Расширение службы уведомлений», вы увидите его в списке целей только после, когда вы подключите свой iPhone к Mac и отправите push-уведомление. , чтобы открыть расширение услуги.

FWIW Я также столкнулся со странными проблемами, когда приложение просто вылетало при запуске. Исправление заключалось в том, чтобы отсоединить приложение от отладчика и запустить обычное приложение, а затем снова присоединить приложение.


Я верю, что если вы также используете os.log, он также просто войдет в консоль, несмотря на то, что я не уверен на 100% в этом.

person Honey    schedule 04.06.2020

Я нашел способ, он не идеален, но, по крайней мере, теперь я могу видеть, что печатаю. Я использовал функцию os_log («вот что я увижу») (вам нужно импортировать os)

1- я установил переменную среды OS_ACTIVITY_MODE = default (не отключать) в моей схеме расширения

2- я запускаю сборку приложения на своем устройстве

3- я прикрепляю свое расширение к процессу (моему приложению)

4 - вы можете просмотреть свои журналы в приложении Console (Open /Applications/Utilities/Console.app) или открыть Windows -> Devices and Simulators, чтобы увидеть консоль ваших устройств.

Вариант консольного приложения - лучший вариант.

person pguzman    schedule 30.01.2018

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

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

Я рекомендую использовать QorumLogs, который дает структурированный и цветной вывод журнала, поэтому вы не пропустите ни одного сообщения. .

person sundance    schedule 29.01.2018
comment
Я сделал то, что вы сказали, но ничего. Я также попытался подключить расширение к процессу (мое основное приложение), но ничего не было в журналах консоли или устройства. - person pguzman; 30.01.2018
comment
Я думаю, что QorumLogs использует os_log, поэтому он должен отображаться в консоли, я попробую позже, спасибо - person pguzman; 30.01.2018

Вы можете использовать переменную "заполнитель" для печати некоторых отладочных сообщений.

person Dmih    schedule 30.05.2019