Решил системно подойти к разным метрикам стабильности и качества и задумался... Почему никто не спрашивает никогда про виды крашей? Многие разрабы и тестеры чаще всего дают тикет с крашем, но в 95% почти никакой инфы о чем краш, какого типа?
Решил собрать в один список самые популярные:
1️⃣ Addressing watchdog terminations 🤩
О Watchdog мы много раз писали. Важно помнить, что он не работает в симуляторах, а включен только на реальных устройствах.
Watchdog завершает работу задач, когда ОС убивает приложение за нарушение правил использования времени или ресурсов
2️⃣ Investigating memory access crashes 🤩
Наверное, самый популярный крэш. Обращение к уже освобождённой памяти или как говорит нейронка "Разыменование нулевого или невалидного указателя".
3️⃣ Addressing crashes from Swift runtime errors 🤩
Многие путают force unwrap с крэшем выше. Оба крэша выглядят похоже в Xcode, но природа принципиально разная.
EXC_BAD_ACCESS - чаще инициирует CPU. В момент неверного обращения к памяти.
EXC_BREAKPOINT - Swift runtime до обращения к памяти. Force unwrap nil — это EXC_BREAKPOINT, а не BAD_ACCESS
Полезные ссылки:
- Все типы крэшей
- Understanding Crashes and Crash Logs