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

Налагодження та аналіз збоїв за допомогою штучного інтелекту

Прибуток:

  • Можливість швидко звужувати можливі першопричини, надаючи штучному інтелекту записи про збої (трасування стека) з відповідним кодом і контекстом сценарію
  • Можливість назавжди вирішити першопричину, а не підтверджувати діагноз штучного інтелекту як гіпотезу в коді та тестувати та замовчувати симптом
  • Захист конфіденційності під час налагодження шляхом маскування особистих даних у записах про збої та журналах

Кожен додаток видає помилки; Хорошого розробника відрізняє те, як швидко він знаходить і виправляє помилки. Налагодження мобільного пристрою — пошук і усунення джерела проблеми — особливо складно, оскільки помилка виникає на пристрої користувача в середовищі, яке ви не бачите. У більшості випадків усе, що у вас є, — це журнал збоїв (журнал збоїв / трасування стека — технічна інформація про те, куди зайшла програма після збою). ШІ надзвичайно потужний у зчитуванні цих загадкових записів, переліку можливих причин і пропонуванні рішень. У цьому розділі ми навчимося використовувати ШІ як «детектива помилок», але залишимо на вас відповідальність за перевірку остаточного діагнозу та виправлення.

Читання журналу збоїв: де ШІ сяє найяскравіше

Журнал збоїв — це довгий і лякаючий текст; недосвідчений розробник не знатиме, де шукати. ШІ аналізує цей текст за лічені секунди: на якому рядку він вийшов з ладу, яке виключення було викинуто, яка можлива причина. Поширені мобільні помилки очевидні, і штучний інтелект швидко їх розпізнає: NullPointerException (спроба отримати доступ до нульового значення), IndexOutOfBoundsException (доступ до неіснуючого елемента списку) на Android, EXC_BAD_ACCESS (доступ до звільненої пам’яті) на iOS, несподівано виявлено нуль (примусове встановлення нуля необов’язково).

Нижче наведено найпоширеніші типи збоїв мобільного зв’язку та їх типові причини:

Помилка (виняток)

Платформа

типова причина

NullPointerException

Android

Доступ до нульового значення

IndexOutOfBoundsException

Android

Доступ до неіснуючого елемента списку

несподівано знайдено нуль

iOS

Примусове розгортання nil необов'язково (!)

EXC_BAD_ACCESS

iOS

Доступ до звільненої пам'яті

ANR/зависання

Android

Тривала/важка обробка основного потоку

Покроковий процес налагодження:

  1. Зберіть запис. Зберіть разом журнал збоїв, повідомлення про помилку та кроки для його відтворення, якщо це можливо.
  2. Надайте ШІ контекст. Скажіть мені не лише помилку, але й відповідний фрагмент коду та причини його збою.
  3. Запитайте про можливі причини. «Скажіть мені 3 найімовірніші причини та як перевірити кожну».
  4. Підтвердити. Підтвердьте запропоновану причину в коді та тестуванні; Не виправляйте це вгадуванням.
  5. Виправте це та перевірте знову. Переконайтеся, що помилка справді зникла та не генеруються нові помилки.
Порада: передаючи журнал збоїв ШІ, додайте також відповідний фрагмент коду. Тільки за допомогою трасування стека AI робить загальне передбачення; Коли ви бачите код, ймовірність знайти точний рядок і справжню причину значно зростає. Контекст визначає якість діагностики.

Пастка персональних даних

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

Застереження: виправлення, запропоноване штучним інтелектом, може «замовкнути помилку», але не може вирішити першопричину. Наприклад, обернення NullPointerException нульовою перевіркою зупинить збій, але якщо ви не з’ясуєте, чому значення дорівнює нулю, справжня логічна помилка триватиме. Лікуйте хворобу, а не симптом.

Аналіз першопричини

Метою професійного налагодження є не замовчування помилки, а пошук першопричини. Я запитав ШІ: «Чому це може бути нульовим, де воно могло загубитися в потоці даних?» запитуючи: «Як мені заглушити це?» Це набагато цінніше, ніж просити. Після виявлення першопричини відразу вирішуються десятки варіантів однієї помилки. ШІ добре справляється з цим ланцюжком міркувань: слідкуйте за даними від входу до виходу та попросіть його подумати, де вони зламаються.

три міні-чохла

Кейс 1 — 2 години роботи за 10 хвилин. Розробник витратив 2 години на пошуки помилки, яка виникала лише на певній моделі Samsung. Передав журнал збоїв (очищення особистих зон) ШІ; YZ сказав, що помилка вказує на переповнення пам’яті, яке відбувається з іншою роздільною здатністю камери цього пристрою. З розгадкою причину знайшли за 10 хвилин. ШІ прискорив пошук, люди перевірили рішення.

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

Випадок 3 — Витік даних у журналі. Перевірка виявила, що повні імена та номери телефонів користувачів були записані в журнали збоїв програми. Розробники регулярно вставляли ці журнали в ШІ та виправляли помилки; Тож особисті дані зникали місяцями. Журнали були замасковані, а процес виправлено. Урок: конфіденційність діє навіть під час налагодження.

Слабка підказка / Сильна підказка

Погана підказка: «Чому виникає ця помилка? [трасування стека]»

Серйозна підказка: «Цей збій відбувається в моєму додатку для Android. Контекст: — Під час виконання: користувач додає до кошика з інформації про продукт — Лише на деяких пристроях, моделі з низьким обсягом оперативної пам’яті — Пов’язаний код: [ViewModel і частина сховища] — Журнал збоїв (особисті дані видалено): [трасування стека] Перелічіть 3 найімовірніші основні причини. Для кожної: 1) Як перевірити, 2) Постійне виправлення (не замовчування). Висловіть своє припущення там, де ви не впевнені».

Шаблони, які можна копіювати

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

Шаблон основної причини: «Це значення виникає [null/false] неочікувано. Слідкуйте за потоком даних від вхідних даних до цієї точки: де вони можуть бути втрачені чи пошкоджені? Скажіть мені, де я повинен перевіряти на кожному етапі. [код]»

Шаблон читання журналу: «Інтерпретуйте цей вихід журналу: які події відбулися по порядку, де виявилася аномалія, який останній правильний крок перед помилкою? [журнал — особисті дані видалено]»

Шаблон відтворення: «Які кроки, стан пристрою та дані слід спробувати, щоб надійно відтворити цю помилку? Перелічіть умови, які можуть викликати помилку, у порядку ймовірності. [опис]»

Поширені помилки

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

Підсумовуючи

Однією з областей, у яких ШІ є кращим, є читання журналів збоїв і сортування можливих причин; Якість діагностики значно покращується, якщо надати контекст. Але остаточний діагноз і виправлення належать людині: пропозиція штучного інтелекту є гіпотезою, перевіреною в коді та тестуванні. Мета полягає не в тому, щоб заглушити симптом, а усунути першопричину; Заглушена помилка зазвичай повертається в іншій формі. Журнали збоїв можуть містити особисті дані; Замаскуйте його, перш ніж передати його ШІ, і не записуйте особисті дані у свої журнали з самого початку.

Аплікаційне завдання

Візьміть наявний у вас журнал збоїв (або зразок, який ви створили за допомогою штучного інтелекту), замаскуйте в ньому будь-які особисті/відмітні дані та передайте їх ШІ за допомогою «шаблону аналізу збоїв». Розрізняйте, які зі списків першопричин штучного інтелекту є фактичними виправленнями, а які лише замовчують. Застосуйте вибране постійне виправлення та переконайтеся, що помилка зникла та не виникло нових проблем.

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

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