Технические вопросы и ответы QA1887

Журналирование диагностики CFNetwork

Q: Мое приложение делает широкое применение сетевых классов Основы. Когда я встречаюсь с проблемой в своих сетях, есть ли какие-либо инструменты, чтобы помочь отладить их?

A: При отладке сетевой проблемы хорошее место для запуска является трассировкой пакетов. Получение Трассировки пакетов описывает, как получить трассировку пакетов и на OS X и на iOS.

Трассировки пакетов являются очень важным инструментом, но у них есть два недостатка:

К счастью, существует метод, избегающий обоих из этих недостатков: журналирование диагностики CFNetwork. То, когда Вы включите эту функцию CFNetwork, зарегистрирует много полезной информации о его прогрессе к файлу, который можно тогда исследовать, чтобы помочь отладить любые сетевые проблемы, с которыми Вы встречаетесь. Эта функция поддерживается и на iOS и на OS X.

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

Во время нормальной разработки можно установить эту переменную окружения через редактора схемы XCode. Если необходимо исследовать проблемы за пределами XCode, можно установить его программно использование кода, показанного в Перечислении 1.

Перечисление 1  , Программно разрешающее журналирование диагностики CFNetwork

setenv("CFNETWORK_DIAGNOSTICS", "3", 1);

Необходимо сделать это правильно в начале последовательности запуска приложения. Обычно помещение этого в начале main достаточно, но если у Вас есть C++ статические инициализаторы, использующие CFNetwork, необходимо будет выполнить его перед ними.

Журналирование диагностики CFNetwork запускает при первом использовании CFNetwork — или любая платформа, как Основа, использующая CFNetwork — в которой точке это распечатает сообщение как показанный в Перечислении 2.

Перечисление 2  пример диагностики CFNetwork, регистрирующей сообщение запуска

2014-10-28 14:23:37.115 QTestbed[2626:60b] CFNetwork diagnostics log file created at: /private/var/mobile/Applications/76531F40-3291-4565-8C75-0438052C83BC/Library/Logs/CrashReporter/CFNetwork_com.example.apple-samplecode.QTestbed_2626.nwlrb.log

На OS X можно использовать любимый текстовый редактор для открытия этого файла журнала непосредственно; это также применяется при выполнении приложения для iOS в средстве моделирования. Для приложения для iOS, работающего на вещах устройства, немного более хитры. Вы имеете две опции в наличии для Вас:



История версии документа


ДатаПримечания
05.03.2015

Новый документ, описывающий диагностическое журналирование CFNetwork, важный метод отладки для приложений, использующих Основу или Базовые сети Основы.