Единицы
1. Введение в искусственный интеллект в мобильной разработке: роли, границы, аутентификация и безопасность 2. Генерация мобильного кода с помощью искусственного интеллекта: Kotlin, Swift и кроссплатформенная разработка 3. Проектирование интерфейсов и генерация кода пользовательского интерфейса с помощью искусственного интеллекта 4. Искусственный интеллект на устройстве: Core ML, TensorFlow Lite и комплект ML 5. Интеграция Cloud AI и LLM API: чат, потоки и безопасность 6. Генерация тестов с помощью искусственного интеллекта: юнит-тесты, тесты интерфейса и автоматизации 7. Отладка и анализ сбоев с помощью искусственного интеллекта 8. Оптимизация производительности и батареи: быстрые и эффективные приложения с искусственным интеллектом 9. Конфиденциальность, разрешения и безопасное использование 10. Версия для магазина: App Store, Google Play и совместимость с AI. 11. Комплексный проект, ответственное использование искусственного интеллекта и дорожная карта в профессии
Единица 7 / 11

Отладка и анализ сбоев с помощью искусственного интеллекта

Прибыль:

  • Возможность быстро сузить возможные первопричины, передавая записи о сбоях (трассировки стека) искусственному интеллекту с соответствующим кодом и контекстом сценария.
  • Способность навсегда устранить первопричину, а не проверять диагноз ИИ как гипотезу в коде, тестировании и подавлении симптома.
  • Защита конфиденциальности во время отладки путем маскировки личных данных в записях сбоев и журналах.

Каждое приложение выдает ошибки; Что отличает хорошего разработчика, так это то, как быстро он находит и исправляет ошибки. Отладка мобильных устройств — поиск и устранение источника проблемы — особенно сложна, поскольку ошибка возникает на устройстве пользователя, в невидимой для него среде. В большинстве случаев все, что у вас есть, — это журнал сбоев (журнал сбоев/трассировка стека — техническая информация о том, куда пошло приложение в случае сбоя). ИИ чрезвычайно силен в чтении этих загадочных записей, составлении списка возможных причин и предложении решений. В этом разделе мы научимся использовать ИИ в качестве «обнаружителя ошибок», но возложим на вас ответственность за проверку окончательного диагноза и исправление ошибок.

Чтение журнала сбоев: где ИИ сияет ярче

Журнал сбоев — это длинный и устрашающий текст; неопытный разработчик не будет знать, где искать. ИИ разбирает этот текст за секунды: на какой строке произошел сбой, какое исключение было выброшено, какова возможная причина. Распространенные мобильные ошибки очевидны, и ИИ быстро их распознает: NullPointerException (попытка доступа к нулевому значению), IndexOutOfBoundsException (доступ к несуществующему элементу списка) на Android, EXC_BAD_ACCESS (доступ к освобожденной памяти) на iOS, неожиданно найденный нуль (принудительное использование нуля).

Наиболее распространенные типы сбоев мобильных устройств и их типичные причины следующие:

Ошибка (исключение)

Платформа

типичная причина

NullPointerException

Андроид

Доступ к нулевому значению

Индексаутофбаундсисключение

Андроид

Доступ к несуществующему элементу списка

неожиданно обнаружил ноль

iOS

Принудительно развернуть ноль необязательно (!)

EXC_BAD_ACCESS

iOS

Доступ к освобожденной памяти

ANR/заморозка

Андроид

Длительная/тяжелая обработка в основном потоке

Пошаговый процесс отладки:

  1. Соберите запись. Соберите вместе журнал сбоев, сообщение об ошибке и шаги по его воспроизведению, если это возможно.
  2. Дайте контекст ИИ. Расскажите мне не только об ошибке, но и о соответствующем фрагменте кода и о том, из-за чего он произошел сбой.
  3. Спросите о возможных причинах. «Назовите мне три наиболее вероятные причины и как проверить каждую».
  4. Проверять. Подтвердите предложенную причину в коде и тестировании; Не исправляйте это путем догадок.
  5. Исправьте и проверьте еще раз. Убедитесь, что ошибка действительно исчезла и новые ошибки не возникают.
Совет: передавая журнал сбоев ИИ, включите также соответствующий фрагмент кода. Только с помощью трассировки стека ИИ делает общий прогноз; Когда вы видите код, вероятность найти точную строку и реальную причину значительно возрастает. Контекст определяет качество диагностики.

Ловушка личных данных

Журналы сбоев и журналы часто содержат пользовательские данные: адрес электронной почты, идентификатор пользователя, местоположение и даже содержимое формы. Вставка этой записи в ИИ в том виде, в каком она есть, означает утечку персональных данных третьей стороне и является нарушением KVKK/GDPR. Перед отправкой записи очистите (замаскируйте) личные кабинеты. Также будьте осторожны и не записывайте личные данные в журналы вашего приложения с самого начала; Хороший журнал описывает проблему, но не раскрывает ее личность.

Внимание: исправление, предложенное ИИ, может «заглушить ошибку», но не может устранить основную причину. Например, обертывание NullPointerException проверкой на ноль остановит сбой, но если вы не выясните, почему значение равно нулю, фактическая логическая ошибка продолжится. Лечите болезнь, а не симптом.

Анализ первопричин

Цель профессиональной отладки — не замалчивать ошибку, а найти ее первопричину. Я спросил ИИ: «Почему это может быть ноль, где оно могло затеряться в потоке данных?» спрашивая: «Как мне заставить это замолчать?» Это гораздо ценнее, чем спрашивать. Как только основная причина найдена, десятки вариантов одной и той же ошибки устраняются одновременно. ИИ хорошо умеет рассуждать по этой цепочке: проследите за данными от входа до выхода и попросите его подумать о том, где они ломаются.

три мини-кейса

Случай 1 — 2 часа работы за 10 минут. Разработчик потратил 2 часа на поиск ошибки, которая приводила к сбою только на конкретной модели Samsung. Передал ИИ журнал сбоев (очистка личных кабинетов); YZ сказал, что ошибка указывает на переполнение памяти, которое происходит при другом разрешении камеры этого устройства. С подсказкой причина была найдена за 10 минут. ИИ ускорил поиск, человек проверил решение.

Случай 2. Заглушенная ошибка вернулась. Одна команда заставила замолчать повторяющийся сбой, используя предложение ИИ, чтобы попытаться его поймать. Сбой прекратился, но пользователи начали жаловаться, что «данные не сохраняются»; поскольку настоящая проблема (соединение с базой данных) все еще существовала, она просто стала невидимой. Как только основная причина была найдена, сбой и потеря данных были устранены. Урок: замалчивание не решает проблему.

Случай 3 — Утечка данных в журнале. Проверка показала, что полные имена и номера телефонов пользователей были записаны в журналы сбоев приложения. Разработчики регулярно вставляли эти логи в ИИ и исправляли ошибки; Итак, персональные данные распространяются уже несколько месяцев. Логи были замаскированы и процесс исправлен. Урок: конфиденциальность сохраняется даже при отладке.

Слабая подсказка / Сильная подсказка

Плохая подсказка: «Почему возникает эта ошибка? [трассировка стека]»

Сильная подсказка: «Этот сбой происходит в моем приложении для Android. Контекст: — При выполнении: пользователь добавляет в корзину из сведений о продукте — Только на некоторых устройствах, моделях с низким объемом оперативной памяти — Связанный код: [часть ViewModel и репозитория] — Журнал сбоев (персональные данные очищены): [трассировка стека] Перечислите 3 наиболее вероятные основные причины. Для каждой: 1) Как проверить, 2) Постоянное исправление (без отключения звука). Выскажите свое предположение, если вы не уверены».

Копируемые шаблоны

Шаблон анализа сбоя: «Проанализируйте следующий сбой. Контекст: [что вы делаете, какое устройство/версия]. Соответствующий код: [код]. Журнал сбоев (персональные данные очищены): [след]. Укажите 3 наиболее вероятные основные причины и проверку + постоянное исправление для каждой. Также отметьте обходные пути, которые заглушат симптом».

Шаблон основной причины: «Это значение приходит [null/false] неожиданно. Проследите за потоком данных от входа до этой точки: где оно могло быть потеряно или повреждено? Скажите мне, где я должен проверить на каждом этапе. [код]»

Шаблон чтения журнала: «Интерпретируйте этот вывод журнала: какие события произошли по порядку, где находится отклонение, каким был последний работоспособный шаг перед ошибкой? [журнал — персональные данные удалены]»

Шаблон воспроизведения: «Какие шаги, состояния устройства и данные мне следует попытаться воспроизвести, чтобы надежно воспроизвести эту ошибку? Перечислите условия, которые могут вызвать ошибку, в порядке вероятности. [описание]»

Распространенные ошибки

  • Предоставление контекстно-свободной трассировки стека. Без соответствующего кода и сценария ИИ делает общий прогноз.
  • Вставка личных данных в ИИ вместе с логами. Нарушение конфиденциальности; сначала маску.
  • Заглушите симптом. Скрытие сбоя с помощью try-catch оставляет основную проблему и создает новые проблемы.
  • Применение первого предложения без его проверки. Диагноз AI является гипотезой; Подтвердите в коде.
  • Пытаюсь воспроизвести в эмуляторе. Некоторые ошибки появляются только на реальном устройстве/состоянии.
  • Не проводить повторное тестирование после коррекции. Исправление могло сломать что-то еще; Проверьте регрессию.

В итоге

Одна из областей, где ИИ превосходит других, — это чтение журналов сбоев и выяснение возможных причин; Качество диагностики значительно улучшается, когда предоставляется контекст. Но окончательный диагноз и коррекция принадлежат человеку: предложение ИИ — это гипотеза, проверенная в коде и тестировании. Цель состоит не в том, чтобы заглушить симптом, а в том, чтобы устранить первопричину; Скрытая ошибка обычно возвращается в другой форме. Журналы сбоев могут содержать личные данные; Замаскируйте его перед передачей ИИ и не записывайте личные данные в свои логи с самого начала.

Задача приложения

Возьмите имеющийся у вас журнал сбоев (или образец, который вы сгенерировали с помощью ИИ), замаскируйте в нем все личные/отличительные данные и передайте его ИИ с «шаблоном анализа сбоев». Определите, какие из первопричин в списках AI являются реальными исправлениями, а какие просто замалчивают. Примените выбранное вами постоянное исправление и убедитесь, что ошибка исчезла и не возникает новых проблем.

контрольный список

  • [ ] Я предоставил журнал сбоев с соответствующим кодом и контекстом сценария.
  • [ ] Я замаскировал личные/отличительные данные в журналах
  • [ ] Я попросил ИИ выявить основную причину и окончательное решение, а не заглушить
  • [ ] Я проверил диагноз в коде и тестировании, я не применил его вслепую
  • [ ] После исправления я проверил, что ошибка исчезла и регресса не произошло.
  • [ ] Я проверил, что мое приложение не записывает в свои логи личные данные