Что такое краш-логи и для чего они нужны?

«Что такое краш-логи и для чего они нужны?» — вопрос из категории Логирование и мониторинг, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Краш-логи (логи аварийного завершения) — это автоматически сгенерированные отчёты, содержащие детальную информацию о состоянии приложения в момент его падения.

Назначение:

  • Диагностика причин сбоя: Определение строки кода, исключения или условия, вызвавшего краш.
  • Воспроизведение багов: Понимание последовательности действий и состояния системы перед падением.
  • Приоритизация исправлений: Анализ частоты и критичности различных сбоев.

Типичное содержимое краш-лога:

  • Стек вызовов (Stack Trace): Цепочка вызовов методов, приведшая к ошибке.
  • Тип исключения: Например, NullPointerException, Segmentation Fault.
  • Состояние памяти и регистров: Для низкоуровневой отладки нативных сбоев.
  • Версия ОС, приложения и метаданные устройства.

Пример (Android):

FATAL EXCEPTION: main
Process: com.example.app, PID: 12345
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
    at com.example.app.MainActivity.onCreate(MainActivity.java:27) // Указывает на проблемную строку
    at android.app.Activity.performCreate(Activity.java:7894)

Без краш-логов отладка сложных, особенно нерегулярных падений, была бы крайне трудоёмкой. Они являются основным источником информации для разработчиков и QA при анализе критических инцидентов.