Jednotka 7 / 11

Ladění a analýza pádů pomocí umělé inteligence

zisky:

  • Schopnost rychle zúžit možné základní příčiny poskytnutím záznamů o selhání (trasování zásobníku) umělé inteligenci s příslušným kódem a kontextem scénáře
  • Schopnost trvale vyřešit hlavní příčinu namísto ověřování diagnózy AI jako hypotézy v kódu a testování a umlčování příznaku
  • Ochrana soukromí při ladění maskováním osobních údajů v záznamech o selhání a protokolech

Každá aplikace dává chyby; Dobrého vývojáře odlišuje to, jak rychle najde a opraví chyby. Mobilní ladění – nalezení a oprava zdroje problému – je obzvláště obtížné, protože k chybě dochází na zařízení uživatele v prostředí, které nevidíte. Většinu času máte k dispozici pouze protokol o selhání (protokol o selhání / trasování zásobníku – technické zhroucení toho, kam se aplikace dostala, když se zhroutila). Umělá inteligence je extrémně výkonná při čtení těchto záhadných záznamů, vyjmenovávání možných příčin a navrhování řešení. V této jednotce se naučíme, jak používat AI jako „detektiva chyb“, ale ponecháme na vás odpovědnost za ověření konečné diagnózy a opravy.

Čtení protokolu o haváriích: Kde AI září nejjasněji

Protokol o selhání je dlouhý a zastrašující text; nezkušený vývojář nebude vědět, kde hledat. AI analyzuje tento text během několika sekund: na kterém řádku došlo k chybě, která výjimka byla vyvolána, jaký je možný důvod. Běžné mobilní chyby jsou zřejmé a AI je rychle rozpozná: NullPointerException (pokus o přístup k nulové hodnotě), IndexOutOfBoundsException (přístup k neexistujícímu prvku seznamu) na Androidu, EXC_BAD_ACCESS (přístup k uvolněné paměti) na iOS, neočekávaně nalezena nula (vynucení nula volitelné).

Nejběžnější typy selhání mobilních zařízení a jejich typické příčiny jsou následující:

Chyba (výjimka)

Platforma

typická příčina

Výjimka NullPointerException

Android

Přístup k hodnotě null

IndexOutOfBoundsException

Android

Přístup k neexistujícímu prvku seznamu

neočekávaně zjištěno nula

iOS

Vynutit rozbalení nulové volitelné (!)

EXC_BAD_ACCESS

iOS

Přístup k uvolněné paměti

ANR/zmrazení

Android

Dlouhé/těžké zpracování na hlavním závitu

Postup ladění krok za krokem:

  1. Sbírejte záznam. Dejte dohromady protokol o selhání, chybovou zprávu a kroky k jeho reprodukci, pokud je to možné.
  2. Dejte kontext AI. Řekněte mi nejen chybu, ale i relevantní část kódu a to, co se zhroutilo.
  3. Zeptejte se na možné příčiny. "Řekněte mi 3 nejpravděpodobnější příčiny a jak každou ověřit."
  4. Ověřte. Potvrďte navrhovaný důvod v kódu a testování; Neřešte to hádáním.
  5. Opravte to a otestujte znovu. Zkontrolujte, zda chyba skutečně zmizela a negenerovaly se žádné nové chyby.
Tip: Při předávání protokolu o selhání AI zahrňte také příslušný fragment kódu. Pouze s trasováním zásobníku dělá AI obecnou předpověď; Když vidíte kód, pravděpodobnost nalezení přesné čáry a skutečné příčiny se výrazně zvyšuje. Kontext určuje kvalitu diagnózy.

Past na osobní údaje

Protokoly a protokoly o selhání často obsahují uživatelská data: e-mail, ID uživatele, umístění, dokonce i obsah formuláře. Vložení tohoto záznamu do AI tak, jak je, představuje únik osobních údajů třetí straně a je porušením KVKK / GDPR. Před odesláním nahrávky vyčistěte (zamaskujte) osobní oblasti. Dávejte si také pozor, abyste od začátku nezapisovali osobní údaje do logů vaší aplikace; Dobrý protokol popisuje problém, ale neodhaluje identitu.

Upozornění: Oprava navržená AI může „umlčet chybu“, ale nemusí vyřešit hlavní příčinu. Například zabalení NullPointerException s kontrolou null zastaví selhání, ale pokud nezjistíte, proč je hodnota null, skutečná logická chyba bude pokračovat. Léčte nemoc, ne symptom.

Analýza hlavní příčiny

Cílem profesionálního ladění není umlčet chybu, ale najít hlavní příčinu. Zeptal jsem se AI ​​"proč by to mohlo být nulové, kde se to mohlo ztratit v toku dat?" ptát se: "Jak to umlčím?" Je to mnohem cennější než se ptát. Jakmile je nalezena hlavní příčina, řeší se najednou desítky variant stejné chyby. Umělá inteligence je dobrá v tomto řetězovém uvažování: sledujte data od vstupu k výstupu a požádejte je, aby přemýšlelo o tom, kde se porouchají.

tři mini pouzdra

Případ 1 — 2 hodiny práce za 10 minut. Vývojář strávil 2 hodiny hledáním chyby, která se zhroutila pouze na konkrétním modelu Samsungu. Předal AI záznam o havárii (vyčištění osobních oblastí); YZ uvedl, že chyba ukazuje na přetečení paměti, ke kterému dochází při jiném rozlišení fotoaparátu tohoto zařízení. S vodítkem byl důvod nalezen za 10 minut. AI urychlila hledání, člověk ověřil řešení.

Případ 2 – Umlčený bug je zpět. Jeden tým umlčel opakující se pád pomocí návrhu umělé inteligence, aby se ho pokusil zachytit. Zhroucení se zastavilo, ale uživatelé si začali stěžovat, že „data se neukládají“; protože skutečný problém (spojení s databází) stále existoval, právě se stal neviditelným. Jakmile byla nalezena hlavní příčina, pád i ztráta dat byly vyřešeny. Ponaučení: umlčení neřeší.

Případ 3 — Únik dat v protokolu. Audit zjistil, že do protokolů o selhání aplikace byla zapsána celá jména a telefonní čísla uživatelů. Vývojáři tyto protokoly běžně vkládali do AI a opravovali chyby; Osobní údaje tedy vycházejí již měsíce. Protokoly byly maskovány a proces byl opraven. Poučení: důvěrnost platí i při ladění.

Slabá výzva / Silná výzva

Špatná výzva: "Proč k této chybě dochází? [trasování zásobníku]"

Silná výzva: "K tomuto selhání dochází v mé aplikaci pro Android. Kontext:- Při přidávání uživatele do košíku z podrobností o produktu- Pouze na některých zařízeních, modely s nízkou RAM- Související kód: [ViewModel and Repository part]- Protokol selhání (osobní údaje vymazány): [trasování zásobníku]Uveďte 3 nejpravděpodobnější hlavní příčiny. Pro každou:1) Jak mohu ověřit (nejste si jisti, že si nejste jisti.")

Kopírovatelné šablony

Šablona analýzy selhání: "Analyzujte následující selhání. Kontext: [co děláte, které zařízení/verze]. Příslušný kód: [kód]. Protokol selhání (osobní údaje vymazány): [trasování]. U každého uveďte 3 nejpravděpodobnější hlavní příčiny a ověření + trvalou opravu. Označte také řešení, která ztiší příznak."

Šablona hlavní příčiny: "Tato hodnota přichází [null/false] neočekávaně. Sledujte tok dat od vstupu do tohoto bodu: kde by mohla být ztracena nebo poškozena? Řekněte mi, kde bych měl v každé fázi zkontrolovat. [kód]"

Šablona čtení protokolu: "Interpretujte tento výstup protokolu: jaké události se staly v pořadí, kde je abnormalita, jaký byl poslední zdravý krok před chybou? [protokol — osobní údaje vymazány]"

Šablona reprodukce: "Jaké kroky, stavy zařízení a data bych se měl pokusit o spolehlivou reprodukci této chyby? Uveďte podmínky, které by mohly vyvolat chybu v pořadí pravděpodobnosti." [popis]"

Časté chyby

  • Poskytování bezkontextového trasování zásobníku. Bez relevantního kódu a scénáře dělá AI obecnou předpověď.
  • Vkládání osobních údajů do AI spolu s protokoly. Porušení důvěrnosti; nejprve masku.
  • Umlčte symptom. Skrytí havárie pomocí try-catch ponechává kořenový problém a vytváří nové problémy.
  • Použití prvního návrhu bez jeho ověření. Diagnóza AI je hypotéza; Potvrďte v kódu.
  • Zkouším to reprodukovat v emulátoru. Některé chyby se objevují pouze na skutečném zařízení/stavu.
  • Po opravě neprobíhá opětovné testování. Oprava možná pokazila něco jiného; Zkontrolujte regresi.

V souhrnu

Jednou z oblastí, kde umělá inteligence exceluje, je čtení protokolů o selhání a třídění možných příčin; Kvalita diagnózy se výrazně zlepší, když je uveden kontext. Ale konečná diagnóza a oprava patří člověku: návrh AI je hypotéza, ověřená v kódu a testování. Cílem není umlčet symptom, ale vyřešit základní příčinu; Zamlčená chyba se obvykle vrátí v jiné podobě. Protokoly o selhání mohou obsahovat osobní údaje; Zamaskujte to, než to dáte AI a nezapisujte si od začátku do protokolů osobní údaje.

Aplikační úkol

Vezměte protokol o selhání, který máte (nebo vzorek, který vygenerujete z AI), zamaskujte v něm všechna osobní/rozlišující data a předejte jej AI pomocí „šablony analýzy zhroucení“. Rozlište, které seznamy hlavních příčin AI jsou skutečnými opravami a které pouze umlčují. Použijte trvalou opravu, kterou jste si vybrali, a ověřte, že chyba je pryč a nevznikají žádné nové problémy.

kontrolní seznam

  • [ ] Dal jsem protokol o selhání s příslušným kódem a kontextem scénáře
  • [ ] V protokolech jsem zamaskoval osobní/rozlišovací údaje
  • [ ] Požádal jsem AI o hlavní příčinu a trvalou opravu, ne o umlčení
  • [ ] Diagnózu jsem ověřil v kódu a testování, neaplikoval jsem ji naslepo
  • [ ] Po opravě jsem otestoval, že chyba zmizela a nedošlo k žádné regresi
  • [ ] Zkontroloval jsem, že moje aplikace nezapisuje do protokolů osobní údaje