Dobici:
- Sposobnost brzog sužavanja mogućih osnovnih uzroka davanjem zapisa o padu (tragova steka) umjetnoj inteligenciji s relevantnim kodom i kontekstom scenarija
- Sposobnost trajnog otklanjanja osnovnog uzroka umjesto potvrđivanja dijagnoze AI kao hipoteze u kodu i testiranja i utišavanja simptoma
- Zaštita privatnosti prilikom otklanjanja grešaka maskiranjem ličnih podataka u zapisima o rušenju i evidencijama
Svaka aplikacija daje greške; Ono što razlikuje dobrog programera je koliko brzo pronalazi i ispravlja greške. Otklanjanje grešaka na mobilnom uređaju — pronalaženje i otklanjanje izvora problema — posebno je teško jer se greška javlja na korisnikovom uređaju, u okruženju koje ne vidite. Većinu vremena, sve što imate je evidencija o padu (zapis pada / praćenje steka — tehnički pregled gdje je aplikacija otišla kada se srušila). AI je izuzetno moćan u čitanju ovih zagonetnih zapisa, nabrajanju mogućih uzroka i predlaganju rješenja. U ovoj jedinici naučit ćemo kako koristiti AI kao „detektiv bugova“, ali vam ostavljamo odgovornost da potvrdite konačnu dijagnozu i popravite.
Čitanje dnevnika pada: Gdje AI sija najsjajnije
Dnevnik pada je dugačak i zastrašujući tekst; neiskusni programer neće znati gdje da traži. AI analizira ovaj tekst za nekoliko sekundi: u kojoj liniji se srušio, koji izuzetak je izbačen, koji je mogući razlog. Uobičajene greške na mobilnom uređaju su očigledne i AI ih brzo prepoznaje: NullPointerException (pokušava pristupiti nultoj vrijednosti), IndexOutOfBoundsException (pristup nepostojećem elementu liste) na Androidu, EXC_BAD_ACCESS (pristup oslobođenoj memoriji) na iOS-u, neočekivano pronađena nil (prisilna nula).
Najčešći tipovi rušenja mobilnih uređaja i njihovi tipični uzroci su sljedeći:
Greška (izuzetak)
Platforma
tipičan uzrok
NullPointerException
Android
Pristup nultoj vrijednosti
IndexOutOfBoundsException
Android
Pristup nepostojećem elementu liste
neočekivano pronađena nula
iOS
Prisilno odmotavanje nule opciono (!)
EXC_BAD_ACCESS
iOS
Pristup oslobođenoj memoriji
ANR/zamrzavanje
Android
Duga/teška obrada na glavnoj niti
Korak po korak tok otklanjanja grešaka:
- Sakupi zapis. Sastavite dnevnik pada, poruku o grešci i korake za reprodukciju ako je moguće.
- Dajte AI kontekst. Recite mi ne samo grešku, već i relevantni dio koda i šta radi.
- Pitajte za moguće uzroke. “Recite mi 3 najvjerovatnija uzroka i kako da provjerim svaki od njih.”
- Verify. Potvrdite predloženi razlog u kodu i testiranju; Nemojte to popravljati pogađanjem.
- Popravite i testirajte ponovo. Provjerite da li je greška stvarno nestala i da se ne generiraju nove greške.
Savjet: Prilikom davanja evidencije pada AI, uključite i relevantni isječak koda. Samo sa praćenjem steka AI pravi opšte predviđanje; Kada vidite kod, vjerovatnoća pronalaženja tačne linije i pravog uzroka se značajno povećava. Kontekst određuje kvalitetu dijagnoze.
Zamka ličnih podataka
Evidencije i dnevnici često sadrže korisničke podatke: e-poštu, korisnički ID, lokaciju, čak i sadržaj obrasca. Lijepljenje ovog zapisa u AI kao što jest je curenje ličnih podataka trećoj strani i predstavlja kršenje KVKK / GDPR. Očistite (maskirajte) lične prostore prije slanja snimka. Također, pazite da ne upisujete lične podatke u dnevnike vaše aplikacije od početka; Dobar dnevnik opisuje problem, ali ne otkriva identitet.
Oprez: Ispravka koju je predložila AI može "utišati grešku", ali možda neće riješiti osnovni uzrok. Na primjer, omotavanje NullPointerException sa null provjerom zaustavit će pad, ali ako ne shvatite zašto je vrijednost null, stvarna logička greška će se nastaviti. Liječite bolest, a ne simptom.
Analiza uzroka
Cilj profesionalnog otklanjanja grešaka nije ušutkati grešku, već pronaći osnovni uzrok. Pitao sam AI "zašto bi ovo moglo biti nulto, gdje se moglo izgubiti u protoku podataka?" pitajući: "Kako da ućutkam ovo?" To je mnogo vrednije od traženja. Kada se pronađe osnovni uzrok, desetine varijacija iste greške se rešavaju odjednom. AI je dobar u ovom lančanom zaključivanju: pratite podatke od ulaza do izlaza i zamolite ga da razmisli o tome gdje se kvari.
tri mini kofera
Slučaj 1 — 2 sata rada za 10 minuta. Programer je proveo 2 sata tražeći grešku koja se srušila samo na određenom Samsung modelu. Dao dnevnik pada (čišćenje ličnih područja) AI; YZ je rekao da greška ukazuje na prelijevanje memorije koje se javlja s drugačijom rezolucijom kamere tog uređaja. Uz trag, razlog je pronađen za 10 minuta. AI je ubrzao potragu, čovjek je potvrdio rješenje.
Slučaj 2 — Utišana greška se vratila. Jedan tim je utišao sudar koji se ponavljao korištenjem AI prijedloga da ga pokuša uhvatiti. Rušenje je prestalo, ali su korisnici počeli da se žale da se "podaci ne čuvaju"; jer je pravi problem (veza sa bazom podataka) još uvijek postojao, upravo je postao nevidljiv. Kada je temeljni uzrok pronađen, i pad i gubitak podataka su riješeni. Pouka: utišavanje nije rješenje.
Slučaj 3 — Podaci su procurili u dnevnik. Revizija je otkrila da su puna imena i telefonski brojevi korisnika upisani u dnevnike pada aplikacije. Programeri su rutinski lijepili ove zapise u AI i ispravljali greške; Dakle, lični podaci izlaze već mjesecima. Dnevnici su maskirani i proces je ispravljen. Pouka: povjerljivost se primjenjuje čak i pri otklanjanju grešaka.
Slaba prompt / Jaka prompt
Loš upit: "Zašto se javlja ova greška? [praćenje steka]"
Snažan upit: "Ovo rušenje se dešava u mojoj Android aplikaciji. Kontekst:- Dok radi: korisnik dodaje u košaricu iz detalja o proizvodu- Samo na nekim uređajima, modeli sa malo RAM-a- Povezani kod: [ViewModel i dio spremišta]- Dnevnik rušenja (lični podaci obrisani): [praćenje steka]Navedite 3 najvjerovatnija uzroka 1, popravim. prećutkivanje).
Predlošci koji se mogu kopirati
Predložak analize rušenja: "Analizirajte sljedeći pad. Kontekst: [šta radite, koji uređaj/verzija]. Relevantni kod: [šifra]. Dnevnik pada (lični podaci obrisani): [trag]. Navedite 3 najvjerovatnija osnovna uzroka i verifikaciju + trajno rješenje za svaki. Također označite rješenja koja utišaju simptom."
Predložak osnovnog uzroka: "Ova vrijednost dolazi [null/false] neočekivano. Pratite tok podataka od ulaza do ove tačke: gdje bi mogli biti izgubljeni ili oštećeni? Recite mi gdje da provjerim u svakoj fazi. [šifra]"
Predložak za čitanje dnevnika: "Protumačite ovaj izlaz dnevnika: koji su se događaji dešavali redom, gdje je abnormalnost, koji je bio posljednji zdravi korak prije greške? [log — lični podaci obrisani]"
Predložak reprodukcije: "Koje korake, stanja uređaja i podatke trebam pokušati da pouzdano reproduciram ovu grešku? Navedite uslove koji bi mogli pokrenuti grešku prema vjerovatnoći. [opis]"
Uobičajene greške
- Davanje praćenja steka bez konteksta. Bez relevantnog koda i scenarija, AI pravi opšta predviđanja.
- Lepljenje ličnih podataka u AI zajedno sa zapisnicima. Kršenje povjerljivosti; prvo maska.
- Utišajte simptom. Skrivanje pada s try-catch ostavlja osnovni problem i stvara nove probleme.
- Primjena prvog prijedloga bez provjere. Dijagnoza AI je hipoteza; Potvrdite u kodu.
- Pokušavam ga reproducirati u emulatoru. Neke greške se pojavljuju samo na stvarnom uređaju/stanju.
- Ne ponavlja se nakon korekcije. Popravak je možda pokvario nešto drugo; Provjerite regresiju.
Ukratko
Jedna od oblasti u kojoj se AI ističe je čitanje dnevnika pada i razvrstavanje mogućih uzroka; Kvaliteta dijagnoze se značajno poboljšava kada se da kontekst. Ali konačna dijagnoza i korekcija pripadaju čovjeku: sugestija AI je hipoteza, provjerena u kodu i testiranju. Cilj nije utišati simptom, već riješiti osnovni uzrok; Utišana greška se obično vraća u drugom obliku. Dnevnici pada mogu sadržavati lične podatke; Zamaskirajte ga prije nego što ga date AI i nemojte pisati lične podatke u svoje dnevnike od početka.
Zadatak aplikacije
Uzmite dnevnik pada koji imate (ili uzorak koji generišete iz AI), maskirajte sve lične/različite podatke u njemu i dajte ga AI-u pomoću "šablona analize pada". Razlikujte koji od osnovnih uzroka AI liste su stvarne popravke, a koje samo utišavaju. Primijenite trajni popravak koji ste odabrali i provjerite da je greška nestala i da se ne pojavljuju novi problemi.
kontrolna lista
- [ ] Dao sam dnevnik pada s relevantnim kodom i kontekstom scenarija
- [ ] Sakrio sam lične/različite podatke u dnevnike
- [ ] Tražio sam od AI za osnovni uzrok i trajno rješenje, a ne utišavanje
- [ ] Provjerio sam dijagnozu u kodu i testiranju, nisam je primijenio slijepo
- [ ] Nakon popravka, testirao sam da je greška nestala i da nema regresije
- [ ] Provjerio sam da moja aplikacija ne upisuje lične podatke u svoje dnevnike