Логи ошибок айфон

Краткая инструкция по чтению и разбору логов мобильных устройств на Android и iOS, а также необходимые инструменты для Windows и MacOS.

Статья подготовлена red_mad_robot и «Альфа-Банком» на основе доклада Senior QA red_mad_robot Ольги Никитиной «Инструменты для снятия логов с Android / iOS устройств. Чтение и разбор» на митапе «QАчественное общение» при поддержке red_mad_robot.

Уровни логирования и что они означают

Для начала разберёмся с логами. Это текстовые файлы, в которых записываются все действия пользователя. Например, какие кнопки он нажимает в приложении и как на это оно реагирует в ответ.

Записи в логах формируются в хронологическом порядке. Самая свежая — внизу.

Есть два вида логов:

  • Crash logs — файл, в котором хранятся записи только об ошибках экстренного завершения программы — по-простому, когда приложение крашнулось.

  • Logs — простые логи, или журнал событий. Это файл, в котором хранятся системные записи и ответы устройства на действие пользователя.

Логи на мобильных устройствах бывают нескольких уровней:

  • ERROR,

  • WARN,

  • INFO,

  • DEBUG,

  • VERBOSE.

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

Примечание: уровни более применимы к логам на Android, потому что именно там такое разделение встречается чаще.

Рассмотрим подробнее каждый уровень.

Error (ERROR)

На этом уровне информируются ошибки работы системы.

Записи этого уровня требуют быстрого вмешательства разработчика — на такие ошибки нужно реагировать максимально быстро.

Как пример, такая запись в логе:

“ SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length ”

Это ошибка, в которой говорится, что строковый элемент span не может быть пустым.

Или вот:

“ [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008] ] ”

Эта системная ошибка сообщает, что происходит утечка памяти при взаимодействии с каким-то элементом или приложением.

Warning (WARN)

На этом уровне отображаются записи, сообщающие о каком-то неожиданном поведении, требующем внимания, или о ситуации, которая незнакома системе.

Например, сообщение ниже — запись из тестового приложения:

“ [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 16 failed: -2147483648 “

Мы пытаемся декодировать запись в какой-то формат, но его нет. Ошибка сообщает о неуспешной попытке настройки видеоплеера в нужном формате.

Ещё пример:

“ BroadcastQueue: Permission Denial: broadcasting Intent ”

Эта системная ошибка говорит о сбое в работе одного из виджетов на устройстве.

Info (INFO)

На этот уровень приходят записи информационного характера, например о работе системы.

Допустим, такое сообщение об уровне заряда батареи на устройстве:

“ APwBatteryMonitor: screen off start battery: 100 ”

А это сообщение говорит о том, что экран устройства был выключен:

“ HwBatteryService: intent = Intent { act=android.intent.action.SCREEN_OFF flg=0x58200010 } ” 

Ещё в логи этого уровня входят запросы от клиента на сервер: хедеры, тело запросов, которые отправляет клиент, и ответы сервера.

“ okhttp.OkHttpClient: <— 200 https://domainname/api/v1/smth/deals (1691ms)

okhttp.OkHttpClient: server: nginx/1.15.9

okhttp.OkHttpClient: date: Thu, 23 Sep 2021 19:41:17 GMT

okhttp.OkHttpClient: content-type: application/json

okhttp.OkHttpClient: vary: Accept-Encoding

okhttp.OkHttpClient: strict-transport-security: max-age=15724800; includeSubDomains

okhttp.OkHttpClient: {«key»:{«key»:value,»name»:»»},»key»:value,»key»:value}

okhttp.OkHttpClient: <— END HTTP ”

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

Debug (DEBUG)

Это уровень сообщений, в которых передаётся информация о процессах отладки или шагах работы крупных процессов.

Например, в записи ниже сказано, что пользователь нажимал на кнопку уменьшения или увеличения громкости:

“ MediaSessionService: dispatchVolumeKeyEvent ”

Сначала мы видим запись о самом факте нажатия на кнопку, далее оно расшифровывается подробнее:

{ action=ACTION_DOWN, keyCode=KEYCODE_VOLUME_UP }

Ещё пример: если ваше приложение использует сокет-сессию, то на уровне DEBUG мы можем увидеть, когда сессия начинается и заканчивается:

“ b$b: WebSocket connected ”

Verbose (VERBOSE)

Сообщения такого уровня уточняют или раскрывают действия.

Например, у нас есть служба управления окнами на экране приложения. И на уровне Verbose мы можем увидеть подробности её работы.

Открытие окна:

WindowManager: addWindow

Закрытие окна:

WindowManager: Removing Window

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

GnssLocationProvider: reportLocation Location […] 

А меняя звук на устройстве, мы увидим, как растёт или падает значение:

AudioManager: getStreamVolume  streamType: 3 volume: 10

Каждое нажатие, то есть изменение звука, будет отражаться новым сообщением.

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

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

Инструменты для снятия логов: Android

Расскажем о трёх способах.

Первый  Logcat в составе Android Studio, самый известный и широко используемый.

Для снятия логов нам необходимо перевести устройство в режим разработчика/отладки. Для этого нужно:

  • найти в настройках номер нашего билда или ОС (в зависимости от устройства),

  • около десяти раз нажать на эту информацию,

  • при появлении сообщения о том, не хотим ли мы перевести устройство в режим разработчика, нажать «Ок».

Примечание: алгоритм может отличаться в зависимости от производителя устройства, потому что у многих из них свои надстройки на ОС Android.

Дальше подключаем устройство по USB к ПК и устанавливаем Android Studio.
Следующие шаги на скрине:

  1. Выбираем вкладку Logcat (переходим к сообщениям в реальном времени).

  2. В окошке выбираем телефон, с которого снимаем логи.

  3. На этой вкладке выбираем логи определённого приложения. Если нужно снять вообще все логи со всех приложений и системы, эту вкладку стоит не трогать. Рядом с ней можно выбрать уровень логирования (вкладка Verbose на скрине).

  4. В поле поиска, где мы можем фильтровать выдачу, разрешено писать что угодно — от названия пакета до частей вроде fatal.

На скрине видно логи с подключенного устройства.

Второй способ — выгрузка логов с самого устройства. Кроме режима разработчика нам нужно подключить устройство к ПК через USB и установить ADB — Android Debug Bridge.

Открываем терминал и пишем две команды.

Первая — adb devices — показывает подключённые устройства, которые видит ADB. В терминале выглядит так:

Название устройства — 7BKDU18504001505

Название устройства — 7BKDU18504001505

Вводим вторую команду — adb -s название устройства logcat, — которая запускает утилиту Logcat для конкретного устройства. В терминале в реальном времени будут поступать логи.

Как их читать?

  1. В первом столбце — дата и время поступления записи.

  2. Во втором — обозначения уровней логирования. Например, D — это Debug.

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

Третий инструмент — SDK Platform Tools. Процесс его установки практически аналогичен предыдущим двум:

  • переводим телефон в режим разработчика,

  • подключаем к ПК по USB,

  • скачиваем на ПК папку SDK PT (под свою ОС),

  • открываем папку SDK PT в терминале.

Теперь пишем команду ./adb logcat –v threadtime > ./android-debug.log.

В терминале это выглядит так:

Прерываем выполнение команды (например, на Mac это Control+C). Лог добавляется в папку.

Открываем:

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

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

Очень похоже на предыдущий терминал, но файл обновляется, пока в терминале действует команда.

Инструменты снятия логов: iOS

В первую очередь нас интересует xCode — интегрированная среда разработки (IDE), в которую встроен нужный нам инструмент Simulator.

Как использовать инструмент:

  1. Устанавливаем xCode.

  2. В системной строке нажимаем xCode → Open Developer Tools → Simulator.

  3. Устанавливаем приложение.

  4. В самом симуляторе выбираем Debug → Open System Log.

Мы будем видеть логи в реальном времени:

Подобное оформление логов мы уже где-то видели, но построение информации в выдаче немного отличается. Есть дата и время (1) и данные (2) о том, с какого устройства снята информация: имя компьютера, элемент системы, с которого пришло сообщение, и его расшифровка.

Но первый способ работает только с симуляторами. Если необходимо снимать логи с реального устройства, в этом может помочь раздел Devices and Simulators.

Записи можно отфильтровать по конкретному процессу (вашему приложению):

  1. Устанавливаем xCode.

  2. Подключаем устройство к ПК по USB.

  3. Открываем xCode → Windows → Devices and Simulators.

Дальше нажимаем у устройства Open Console и видим панель с названием устройства, информацией о модели и ОС:

1 — все приложения, которые установлены на устройстве, 2 — версия устройства, 3 — пакет приложения устройства

1 — все приложения, которые установлены на устройстве, 2 — версия устройства, 3 — пакет приложения устройства

Логи поступают в реальном времени, но их удобно отслеживать:

У нас есть три столбца:

  1. «Время» — время поступления сообщения.

  2. «Процесс» — с какой части системы/приложения пришло сообщение.

  3. «Сообщение» — описание события, сервисная информация.

В инструменте есть поиск для фильтрации выдачи. Ещё есть полезная кнопка «Приостановить» — она останавливает поток логов.

А вот утилита iMazing поможет снимать iOS-логи для тех, у кого установлен Windows. Приложение платное, но часть функциональности доступна бесплатно. Например, за снятие логов устройства платить не нужно.

В меню выбираем «Показать консоль устройства». В открывшемся окне приходят записи логов в реальном времени со всего устройства.

1 — дата и время получения сообщения; 2 — имя телефона, информация, с какой части устройства пришло сообщение, и описание; 3 — поисковая строка для фильтрации выдачи

1 — дата и время получения сообщения; 2 — имя телефона, информация, с какой части устройства пришло сообщение, и описание; 3 — поисковая строка для фильтрации выдачи

Ещё одно важное достоинство iMazing — возможность сохранять логи (разумеется, по кнопке «Сохранить»).


Статья подготовлена red_mad_robot и «Альфа-Банком» на основе доклада Senior QA red_mad_robot Ольги Никитиной «Инструменты для снятия логов с Android / iOS устройств. Чтение и разбор» на митапе «QАчественное общение» при поддержке red_mad_robot.

Перейти к содержимому

Существует несколько способов просмотреть логи с iOS-устройства.

1. Через само устройство — в этом случае посмотреть можно лишь только краш-репорты (crashlog), но ведь это самое то для тестировщика! Идем в «Settings» -> «General» -> «About» -> «Diagnostic & Usage» -> «Diagnostic & Usage Data» и смотрим все доступные отчеты о падении приложений. Единственная проблема заключается в том, что здесь нет удобного средства для экспорта этих самых отчетов. Тем не менее, при крайней необходимости можно скопировать нужный участок лога через стандартную функцию копирования текста.

2. Через XCode — к сожалению, среда разработки XCode доступна исключительно для MacOS. По этой и многим другим причинам было бы неплохо, если тестировщики iOS-приложений имели в своем распоряжении хотя бы Mac mini. Для просмотра краш-репортов нужно подключить iOS-устройство к компьютеру, нажать кнопку «Use for Development», после чего в разделе «Device Logs» уже можно непосредственно просматривать логи и, что не маловажно, импортировать их!

Просмотр системных логов с iPhone и iPad

3. Через программу «iPhone Configuration Utility» — хотя основная функция этой утилиты заключается в настройки профилей для iOS-устройств, в ней имеется консоль, куда выводятся все логи с подключенного устройства. Незаменимая вещь для тестировщика. К тому же, утилита доступна и для Windows.

Просмотр системных логов с iPhone и iPad

4. Через синхронизацию iTunes — каждый раз, когда вы синхронизируете свое iOS-устройство с iTunes на компьютере, логи сохраняются в следующие директории:

Mac OS X:
~/Library/Logs/CrashReporter/MobileDevice/<DEVICE_NAME>

Windows XP
C:Documents and Settings<USERNAME>Application DataApple ComputerLogsCrashReporterMobileDevice<DEVICE_NAME>

Windows Vista or 7
C:Users<USERNAME>AppDataRoamingApple ComputerLogsCrashReporterMobileDevice<DEVICE_NAME>

If any iOS app crashes some crash logs are generated on behalf of that app.
How to find the location of such crash logs. Please help.

I want crash logs inside the iPhone/iPad, not really using XCode to see the crash logs.

asked Jun 25, 2014 at 4:51

user249605's user avatar

user249605user249605

2292 gold badges3 silver badges8 bronze badges

you can find crash report on iPad/iphone below location for iOS:

IOS7 & Below = Settings —> General —> About —> Diagnostics & Usage —> Diagnotstic & Usage Data

IOS8 & IOS9 = Settings —> Privacy —> Diagnostics & Usage —> Diagnotstic & Usage Data

IOS10 & Above = Settings —> Privacy —> Analytics —> Analytics Data

answered Apr 8, 2015 at 9:52

Jashu's user avatar

JashuJashu

1,04113 silver badges19 bronze badges

1

I think he/she asked about crash logs inside the iPhone/iPad, not really using XCode to see the crash logs.

To check the crash logs inside iPhone/iPad, you have to go to

Settings -> General -> About -> Diagnostics & Usage -> Diagnostic & Usage Data

You will see the crash log with the Title APPName_Date….

Attached the screen shot of one of the crash logs below:-

enter image description here

answered Jun 25, 2014 at 5:16

Ricky's user avatar

RickyRicky

10.5k6 gold badges36 silver badges49 bronze badges

0

👉 https://support.apple.com/en-in/HT202100

IOS 7 & Below = Settings —> General —> About —> Diagnostics & Usage —> Diagnotstic & Usage Data

IOS 8 & Above = Settings —> Privacy —> Diagnostics & Usage —> Diagnotstic & Usage Data

IOS 10.2 = Settings —> Privacy —>Analytics —> Diagnotstic & Usage Data

IOS 10.3.2 and Above = Settings —> Privacy —> Analytics —> Analytics Data

enter image description here

answered May 2, 2017 at 5:06

MAhipal Singh's user avatar

MAhipal SinghMAhipal Singh

4,7451 gold badge42 silver badges56 bronze badges

1

From Apple Docs:

Even though you won’t be able to run the app in Xcode’s debugger, Xcode can still give you all the information you need to debug the problem.

1) Plug in the device and open Xcode

2) Open the Organizer window and select the Devices tab

3) Under the DEVICES section in the left column, expand the listing for the device

4) Select Device Logs to see crash logs or select Console to see Console output

OR
enter image description here

answered Jun 25, 2014 at 4:55

Himanshu A Jadav's user avatar

2

Поиск журналов сбоев на устройствах iOS

Если вы устраняете сбои приложения, бета-тестируете приложение или просто хотите помочь разработчику iOS после обнаружения конкретной ошибки, вы можете получать отчеты о сбоях из любого приложения на устройстве iPhone, iPad или iPod touch. как только он будет синхронизирован с компьютером.

Поиск данных отчета о сбоях для iOS можно выполнить вне Xcode, если в любом случае вы сделаете резервную копию устройства на компьютер. В статье показано, как найти журналы сбоев iOS в Mac OS X и ПК с Windows.

Доступ к журналам сбоев iOS на Mac

Для Mac OS X:

  • Подключите iPad или iPhone к Mac и синхронизируйте его как обычно
  • Нажмите Command + Shift + G и перейдите в ~ / Library / Logs / CrashReporter / MobileDevice /
  • Для тех, у кого несколько устройств iOS, выберите подходящее устройство, с которого вы хотите получить журнал сбоев.
  • Найдите файлы с именем приложения, из которого вы хотите получать отчеты о сбоях, скопируйте их из папки или скопируйте несколько журналов и заархивируйте их для разработчика.

Журнал сбоев iOS

Получение отчетов о сбоях iPhone и iPad на ПК с Windows

Для ПК с Windows:

  • Синхронизируйте устройство iOS с iTunes, затем посмотрите в следующих местах:
    • Windows XP: C: Documents and Settings USER Application Data Apple computer Logs CrashReporter
    • Windows Vista и Windows 7: C: Users USER AppData Roaming Apple computer Logs CrashReporter MobileDevice
  • Найдите соответствующее имя устройства, затем найдите файл по имени приложения и отметке времени.

Независимо от того, получаете ли вы журнал сбоев с ПК или Mac, если устройство такое же, данные журнала сбоев должны быть одинаковыми.

Благодаря TC за подсказку, дополнительную информацию можно найти на Библиотека Apple Dev.

логи прошивки это просто подробная инфа ошибок,т.е. окошко на котором в тюнце выскочила ошибка -1,это понятие ростяжимое и только извесно что проблема в модемной части,либо нет питания модема либо епром и т п,по нею кроются еще много ошибок которые подсказывают намного точнее куда копать,а вот как раз в логах и кроются эти подсказки,можна и ошибку 50 увидеть и еще кучу всяких,типа 27,28,вот кто много перебрал афоней,тот уже почти на изусть знает,все приходит с опытом,нужно знать где когда и какие напруги должны быть,и даже при прошивке они вичисляются легко,и даже если ошибка -1,это далеко не значит что проблема в модемном проце,просто банально нет питания бб,а тут и ошибка в логах подскажет (ошибка 50) а не строго -1,потому он не отзывается при прошивке…я во многих темах детально описывал разные шаги по разных ошибках…а еще очень полезно знать поочередность прошиваемых частей ТА,это минимум который должен знать любой мастер,а уж тогда изучать ошибки и их логи.

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Логи ошибок mysql centos
  • Логи ошибок asterisk
  • Логи iis ошибка 500
  • Логан ошибка р0110

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии