Jednotka 7 / 11

Ladenie a analýza pádov pomocou umelej inteligencie

zisky:

  • Schopnosť rýchlo zúžiť možné hlavné príčiny poskytnutím záznamov o zlyhaní (stopy zásobníka) umelej inteligencii s príslušným kódom a kontextom scenára
  • Schopnosť natrvalo vyriešiť hlavnú príčinu namiesto overovania diagnózy AI ako hypotézy v kóde a testovaní a umlčaní symptómu
  • Ochrana súkromia pri ladení maskovaním osobných údajov v záznamoch o zlyhaní a protokoloch

Každá aplikácia dáva chyby; Dobrého vývojára odlišuje to, ako rýchlo nájde a opraví chyby. Mobilné ladenie – hľadanie a oprava zdroja problému – je obzvlášť ťažké, pretože chyba sa vyskytuje na zariadení používateľa v prostredí, ktoré nevidíte. Väčšinu času máte iba protokol o zlyhaní (záznam o zlyhaní / sledovanie zásobníka – technické zrútenie toho, kam sa aplikácia dostala, keď zlyhala). Umelá inteligencia je mimoriadne výkonná pri čítaní týchto záhadných záznamov, uvádzaní možných príčin a navrhovaní riešení. V tejto jednotke sa naučíme, ako používať AI ako „detektíva chýb“, ale zodpovednosť za overenie konečnej diagnózy a opravu ponecháme na vás.

Čítanie protokolu o zlyhaní: Kde AI žiari najjasnejšie

Protokol o zlyhaní je dlhý a zastrašujúci text; neskúsený vývojár nebude vedieť, kde hľadať. AI analyzuje tento text v priebehu niekoľkých sekúnd: na ktorom riadku došlo k zlyhaniu, ktorá výnimka bola vyvolaná, aký je možný dôvod. Bežné chyby mobilných zariadení sú zrejmé a AI ich rýchlo rozpozná: NullPointerException (pokúša sa o prístup k nulovej hodnote), IndexOutOfBoundsException (prístup k neexistujúcemu prvku zoznamu) v systéme Android, EXC_BAD_ACCESS (prístup k uvoľnenej pamäti) v systéme iOS, neočakávane nájdená nula (vynútená nula je voliteľná).

Najbežnejšie typy zlyhaní mobilných zariadení a ich typické príčiny sú nasledovné:

Chyba (výnimka)

Platforma

typická príčina

Výnimka NullPointerException

Android

Prístup k nulovej hodnote

IndexOutOfBoundsException

Android

Prístup k neexistujúcemu prvku zoznamu

neočakávane zistené nula

iOS

Vynútiť rozbalenie nula voliteľné (!)

EXC_BAD_ACCESS

iOS

Prístup k uvoľnenej pamäti

ANR/zmraziť

Android

Dlhé / ťažké spracovanie na hlavnom závite

Postup ladenia krok za krokom:

  1. Zbierajte záznam. Dajte dohromady denník zlyhania, chybové hlásenie a kroky na jeho reprodukciu, ak je to možné.
  2. Dajte kontext AI. Povedzte mi nielen chybu, ale aj príslušný kód a to, čo spôsobilo zlyhanie.
  3. Opýtajte sa na možné príčiny. "Povedzte mi 3 najpravdepodobnejšie príčiny a ako ich overiť."
  4. Overiť. Potvrďte navrhovaný dôvod v kóde a testovaní; Neriešte to hádaním.
  5. Opravte to a znova otestujte. Skontrolujte, či je chyba skutočne preč a negenerujú sa žiadne nové chyby.
Tip: Keď poskytujete AI protokol o zlyhaní, zahrňte aj príslušný útržok kódu. Iba so sledovaním zásobníka robí AI všeobecnú predpoveď; Keď uvidíte kód, pravdepodobnosť nájdenia presnej čiary a skutočnej príčiny sa výrazne zvyšuje. Kontext určuje kvalitu diagnózy.

Pasca na osobné údaje

Protokoly a protokoly zlyhaní často obsahujú používateľské údaje: e-mail, ID používateľa, umiestnenie, dokonca aj obsah formulára. Vloženie tohto záznamu do AI tak, ako je, predstavuje únik osobných údajov tretej strane a je porušením KVKK / GDPR. Pred odoslaním nahrávky vyčistite (zamaskujte) osobné oblasti. Dávajte si tiež pozor, aby ste od začiatku nezapisovali osobné údaje do denníkov vašej aplikácie; Dobrý protokol popisuje problém, ale neodhaľuje identitu.

Upozornenie: Oprava navrhnutá AI môže „umlčať chybu“, ale nemusí vyriešiť hlavnú príčinu. Napríklad zabalenie výnimky NullPointerException s kontrolou null zastaví zlyhanie, ale ak nezistíte, prečo je hodnota nulová, skutočná logická chyba bude pokračovať. Liečte chorobu, nie symptóm.

Analýza hlavnej príčiny

Cieľom profesionálneho ladenia nie je umlčať chybu, ale nájsť hlavnú príčinu. Spýtal som sa AI ​​"prečo by to mohlo byť nulové, kde sa to mohlo stratiť v toku údajov?" pýtajúc sa: "Ako to stíšim?" Je to oveľa cennejšie ako pýtať sa. Po nájdení základnej príčiny sa naraz vyriešia desiatky variácií tej istej chyby. AI je dobrá v tomto reťazovom uvažovaní: sledujte údaje od vstupu po výstup a požiadajte ho, aby premýšľal o tom, kde sa pokazili.

tri mini prípady

Prípad 1 — 2 hodiny práce za 10 minút. Vývojár strávil 2 hodiny hľadaním chyby, ktorá sa zrútila len na konkrétnom modeli Samsungu. Odovzdať záznam o zrážke (vyčistenie osobných priestorov) AI; YZ uviedol, že chyba poukazuje na pretečenie pamäte, ku ktorému dochádza pri inom rozlíšení fotoaparátu tohto zariadenia. S indíciou bol dôvod nájdený za 10 minút. AI urýchlila vyhľadávanie, človek overil riešenie.

Prípad 2 – Umlčaný chrobák je späť. Jeden tím umlčal opakujúce sa zlyhanie pomocou návrhu AI, aby sa ho pokúsil zachytiť. Zlyhávanie sa zastavilo, ale používatelia sa začali sťažovať, že „údaje sa neukladajú“; pretože skutočný problém (spojenie s databázou) stále existoval, len sa stal neviditeľným. Po zistení hlavnej príčiny sa pád aj strata údajov vyriešili. Ponaučenie: umlčanie nerieši.

Prípad 3 – Únik údajov v denníku. Audit zistil, že celé mená a telefónne čísla používateľov boli zapísané do denníkov zlyhania aplikácie. Vývojári bežne vkladali tieto denníky do AI ​​a opravovali chyby; Osobné údaje teda vychádzajú niekoľko mesiacov. Protokoly boli maskované a proces bol opravený. Poučenie: dôvernosť platí aj pri ladení.

Slabá výzva / Silná výzva

Slabá výzva: „Prečo sa vyskytuje táto chyba? [sledovanie zásobníka]“

Silná výzva: "K tomuto zlyhaniu dochádza v mojej aplikácii pre Android. Kontext:- Pri pridávaní používateľa do košíka z podrobností o produkte- Len na niektorých zariadeniach, modely s nízkou pamäťou RAM- Súvisiaci kód: [ViewModel and Repository part]- Protokol o zlyhaní (osobné údaje sú vymazané): [stack trace]Uveďte 3 najpravdepodobnejšie hlavné príčiny. Pre každú: 1) Ako overím (nie ste si istí, že nie ste si istí)."

Kopírovateľné šablóny

Šablóna analýzy zlyhania: "Analyzujte nasledujúce zlyhanie. Kontext: [čo robíte, ktoré zariadenie/verzia]. Príslušný kód: [kód]. Protokol zlyhania (osobné údaje vymazané): [trasovanie]. Pre každý uveďte 3 najpravdepodobnejšie hlavné príčiny a overenie + trvalú opravu. Označte aj riešenia, ktoré stlmia symptóm."

Šablóna hlavnej príčiny: „Táto hodnota prichádza [null/false] neočakávane. Sledujte tok údajov od vstupu až po tento bod: kde by sa mohli stratiť alebo poškodiť? Povedzte mi, kde by som to mal skontrolovať v každej fáze. [kód]“

Šablóna čítania denníka: „Interpretujte tento výstup denníka: aké udalosti sa stali v poradí, kde je abnormalita, aký bol posledný zdravý krok pred chybou? [záznam — osobné údaje vymazané]“

Šablóna reprodukcie: „Aké kroky, stavy zariadenia a údaje by som sa mal pokúsiť spoľahlivo reprodukovať túto chybu? Uveďte podmienky, ktoré by mohli spôsobiť chybu v poradí pravdepodobnosti. [popis]“

Časté chyby

  • Poskytovanie bezkontextového sledovania zásobníka. Bez relevantného kódu a scenára robí AI všeobecnú predpoveď.
  • Vkladanie osobných údajov do AI spolu s denníkmi. Porušenie dôvernosti; najprv maska.
  • Umlčte symptóm. Skrytie havárie pomocou pokusného úlovku opúšťa hlavný problém a vytvára nové problémy.
  • Použitie prvého návrhu bez jeho overenia. Diagnóza AI je hypotéza; Potvrďte v kóde.
  • Pokúšam sa to reprodukovať v emulátore. Niektoré chyby sa objavia iba na skutočnom zariadení/stave.
  • Po oprave sa neopakuje test. Oprava mohla pokaziť niečo iné; Skontrolujte regresiu.

V súhrne

Jednou z oblastí, kde AI vyniká, je čítanie protokolov o zlyhaní a triedenie možných príčin; Kvalita diagnostiky sa výrazne zlepší, keď sa uvedie kontext. Ale konečná diagnóza a náprava patrí človeku: návrh AI je hypotéza overená kódom a testovaním. Cieľom nie je umlčať symptóm, ale vyriešiť hlavnú príčinu; Zamlčaná chyba sa zvyčajne vráti v inej forme. Protokoly o zlyhaní môžu obsahovať osobné údaje; Pred odovzdaním AI to zamaskujte a od začiatku si do denníkov nezapisujte osobné údaje.

Aplikačná úloha

Vezmite si protokol o zlyhaní, ktorý máte (alebo vzorku, ktorú vygenerujete z AI), zamaskujte v ňom všetky osobné/rozlišovacie údaje a dajte ho AI so „šablónou analýzy zrútenia“. Rozlišujte, ktoré zoznamy základných príčin AI sú skutočnými opravami a ktoré len umlčujú. Použite trvalú opravu, ktorú ste si vybrali, a overte, že chyba je preč a nevznikajú žiadne nové problémy.

kontrolný zoznam

  • [ ] Poskytol som protokol o zlyhaní s príslušným kódom a kontextom scenára
  • [ ] V protokoloch som zamaskoval osobné/rozlišovacie údaje
  • [ ] Požiadal som AI o hlavnú príčinu a trvalú opravu, nie o umlčanie
  • [ ] Diagnózu som overil v kóde a testovaní, neaplikoval som ju naslepo
  • [ ] Po oprave som otestoval, že chyba je preč a nedošlo k regresii
  • [ ] Skontroloval som, že moja aplikácia nezapisuje osobné údaje do svojich protokolov