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

Здравствуйте! Мне нужно проанализировать логи после краша стороннего iOS приложения, который происходит сразу после его запуска.

Я предпринял следующие шаги: 
1) Учитывая, что у меня есть rootless на устройстве, я скачал пакет Crash4d, но он не зафиксировал ни одного события.
2) Я проверил обычные настройки, но в логах не обнаружил информацию о моем процессе.
3) Я также исследовал другие области файловой системы, но не нашел необходимую информацию.
4) Я попытался запустить отладку, чтобы успеть до момента краша, но не уверен, как это сделать, хотя у меня есть debugserver.

Где находятся лог-файлы, например, содержащие сообщения от dyld о пересекающихся сегментах? Если таких логов нет, какие инструменты следует установить и что нужно настроить? Спасибо!
  • 24 февраля 2025 г. 20:04
Ответы на вопрос 1
Для анализа логов ошибок и крушений стороннего приложения на iOS, особенно если вы имеете rootless доступ, вы можете попробовать несколько подходов:

1. **Системные логи с помощью Console**:
   Если у вас есть возможность подключить устройство к Mac, откройте приложение **Console** (Консоль) на нем. Подключите устройство и выберите его в боковом меню. Вы сможете видеть системные логи, включая сообщения от приложений, их стэк-трейсы и потенциальные сообщения об ошибках. Убедитесь, что вы фильтруете логи по вашему приложению.

2. **Логи Crashes через Xcode**:
   Если у вас есть проект этого приложения и вы его компилируете, вы можете использовать Xcode для сбора символизированных логов о крашах. Убедитесь, что у вас включен сбор дистрибутивных символов (DSYM). Когда приложение крашится, вы сможете получить информацию о дорожной карте через **Xcode Organizer** (Organizer > Crashes).

3. **Использование `log` команды**:
   С помощью терминала вы можете использовать команду `log` для доступа к системным логам. Введите следующее для просмотра сообщений в реальном времени:

   ```bash
   log stream --level debug --predicate 'eventMessage contains "YOUR_APP_IDENTIFIER"'
   ```

   Замените `YOUR_APP_IDENTIFIER` на идентификатор вашего приложения.

4. **Инструмент Forensic Analysis**:
   Инструменты, подобные `libimobiledevice`, могут помочь в извлечении информации о crash log. Если приложение генерирует лог ошибок, он может храниться в пути:

   ```
   /private/var/mobile/Library/Logs/CrashReporter/MobileDevice/YOUR_APP_NAME/
   ```

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

5. **Установка `debugserver` и использование LLDB**:
   Если вы хотите отлаживать приложение до его краха, запустите приложение через `debugserver`. Для этого выполните на терминале:

   ```bash
   debugserver *:1234 -a YOUR_APP_NAME
   ```

   Затем в другом терминале подключитесь с помощью LLDB:

   ```bash
   lldb
   platform select ios
   process connect connect://127.0.0.1:1234
   run
   ```

   Это позволит вам захватить информацию о прошлом состоянии приложения, а также поймать его в момент краха.

6. **Получение информации о dyld**:
   Вы можете проверить логи о dyld, добавив специальные флаги при запуске вашего приложения. Используя `DYLD_PRINT_LIBRARIES`, можно получить список загружаемых библиотек. Эти флаги необходимо задать, когда вы запускаете приложение. Вы можете попробовать сконструировать команду для выполнения с необходимыми параметрами:

   ```bash
   DYLD_PRINT_LIBRARIES=1 YOUR_APP_EXECUTABLE
   ```

В случае, если ни один из вышеперечисленных методов не предоставляет нужной информации, вы можете рассмотреть возможность использования профилирования или инструментов анализа производительности, таких как Instruments, если у вас есть возможность работать с Xcode.
Похожие вопросы