Как поймать гонку данных
Вопрос
Тест иногда падает со странными значениями в общем словаре. Каким инструментом поймать гонку данных?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Main Thread Checker
- Thread Sanitizer (TSan) в схемеправильный ответ
- Address Sanitizer в схеме
- Instruments: Leaks
Разбор
Thread Sanitizer отслеживает обращения к памяти из разных потоков без синхронизации и сообщает о гонке с обоими стеками. Main Thread Checker ловит только вызовы UI API не с главного потока. Address Sanitizer ищет выходы за границы и use-after-free. Leaks про утечки. TSan замедляет выполнение в разы, поэтому его включают в отдельном прогоне CI. Режим Swift 6 ловит многие гонки ещё при компиляции.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Каким инструментом найти тяжёлый код
Следующий вопрос
Как находить элементы в UI-тестах
Ещё по теме «Производительность и тестирование»
- Тест в Swift Testing
- Hang и hitch: разница
- Пирамида тестов в iOS
- Тестирование сетевого слоя через URLProtocol
- Бюджет кадра на iPhone с ProMotion
- Сколько памяти занимает декодированная картинка
- Приложение пропадает без крэш-лога
- Задача на Swift: статистика рывков по длительностям кадров