Kasu:
- Võimalus kiiresti kitsendada võimalikke algpõhjuseid, andes tehisintellektile krahhikirjeid (virnajäljed) asjakohase koodi ja stsenaariumi kontekstiga
- Võimalus püsivalt lahendada algpõhjus, mitte kinnitada AI diagnoosi hüpoteesina koodis ning testida ja vaigistada sümptomeid
- Privaatsuse kaitsmine silumise ajal isikuandmete maskeerimise teel krahhikirjetesse ja logidesse
Iga rakendus annab vigu; Head arendajat eristab see, kui kiiresti nad vead leiavad ja parandavad. Mobiilne silumine – probleemi allika leidmine ja parandamine – on eriti keeruline, kuna viga ilmneb kasutaja seadmes keskkonnas, mida te ei näe. Enamasti on teil ainult kokkujooksmise logi (krahhilogi / virna jälg – tehniline jaotus selle kohta, kuhu rakendus krahhi ajal läks). AI on äärmiselt võimas nende salapäraste kirjete lugemisel, võimalike põhjuste loetlemisel ja lahenduste väljapakkumisel. Selles üksuses õpime kasutama tehisintellekti "veadetektiivina", kuid jätame teile vastutuse lõpliku diagnoosi kinnitamise ja parandamise eest.
Krahhilogi lugemine: kus AI paistab kõige eredamalt
Krahhilogi on pikk ja hirmutav tekst; kogenematu arendaja ei tea, kust otsida. AI analüüsib seda teksti sekunditega: millisel real see kokku kukkus, milline erand tehti, mis on võimalik põhjus. Levinud mobiilivead on ilmsed ja tehisintellekt tunneb need kiiresti ära: NullPointerException (püüab juurde pääseda nullväärtusele), IndexOutOfBoundsException (juurdepääs olematule loendielemendile) Androidis, EXC_BAD_ACCESS (juurdepääs vabastatud mälule) iOS-is, ootamatult leitud null (sunnib nill).
Kõige levinumad mobiiliõnnetuste tüübid ja nende tüüpilised põhjused on järgmised.
Viga (erand)
Platvorm
tüüpiline põhjus
NullPointerException
Android
Juurdepääs nullväärtusele
IndexOutOfBoundsException
Android
Juurdepääs olematule loendielemendile
ootamatult leitud null
iOS
Sundida lahti pakkima null valikuline (!)
EXC_BAD_ACCESS
iOS
Juurdepääs vabastatud mälule
ANR/külmutamine
Android
Peakeerme pikk/raske töötlus
Samm-sammult silumisvoog:
- Koguge rekord. Pange kokku krahhilogi, veateade ja võimalusel selle taasesitamiseks vajalikud toimingud.
- Andke AI kontekst. Rääkige mulle mitte ainult veast, vaid ka vastavast kooditükist ja sellest, mida see kokku jooksis.
- Küsige võimalikke põhjuseid. "Öelge mulle 3 kõige tõenäolisemat põhjust ja kuidas neid kontrollida."
- Kinnitage. Kinnitage pakutud põhjus koodis ja testimises; Ärge parandage seda oletamisega.
- Parandage see ja testige uuesti. Kontrollige, kas viga on tegelikult kadunud ja uusi tõrkeid ei teki.
Näpunäide: tehisintellektile krahhilogi andmisel lisage ka asjakohane koodilõik. Ainult virnajäljega teeb AI üldist ennustust; Kui näete koodi, suureneb tõenäosus, et leiate täpse rea ja tegeliku põhjuse. Kontekst määrab diagnoosi kvaliteedi.
Isikuandmete lõks
Krahhilogid ja logid sisaldavad sageli kasutajaandmeid: e-posti aadress, kasutajatunnus, asukoht, isegi vormi sisu. Selle kirje kleepimine tehisintellekti sellisel kujul lekitab isikuandmeid kolmandale osapoolele ja on KVKK / GDPR rikkumine. Enne salvestise esitamist puhastage (maskeerige) isiklikud alad. Samuti olge ettevaatlik, et te ei kirjutaks algusest peale oma rakenduse logidesse isikuandmeid; Hea logi kirjeldab probleemi, kuid ei paljasta identiteeti.
Ettevaatust: AI soovitatud parandus võib "vea vaigistada", kuid ei pruugi selle algpõhjust lahendada. Näiteks NullPointerExceptioni mähkimine nullkontrolliga peatab krahhi, kuid kui te ei saa aru, miks väärtus on null, jätkub tegelik loogikaviga. Ravige haigust, mitte sümptomit.
Algpõhjuse analüüs
Professionaalse silumise eesmärk ei ole viga vaigistada, vaid leida algpõhjus. Küsisin AI-lt "miks see võib olla null, kuhu see andmevoogu kaduma võis?" küsides: "Kuidas ma seda vaigistan?" See on palju väärtuslikum kui küsimine. Kui algpõhjus on leitud, lahendatakse korraga kümneid sama vea variatsioone. Tehisintellekt on selles ahelarutluses hea: jälgige andmeid sisendist väljundini ja paluge tal mõelda, kus need katki lähevad.
kolm minikarpi
Juhtum 1 — 2 tundi tööd 10 minutiga. Arendaja otsis 2 tundi viga, mis jooksis kokku ainult konkreetse Samsungi mudeli puhul. Andis tehisintellektile krahhilogi (isiklike alade puhastamine); YZ ütles, et viga viitab mälu ülevoolule, mis ilmneb selle seadme erineva kaamera eraldusvõimega. Vihjega leiti põhjus 10 minutiga. AI kiirendas otsingut, inimene kontrollis lahendust.
Juhtum 2 – vaigistatud viga on tagasi. Üks meeskond vaigistas korduva krahhi, kasutades AI soovitust selle püüdmiseks. Krahh lõppes, kuid kasutajad hakkasid kurtma, et "andmeid ei salvestata"; kuna tegelik probleem (andmebaaside ühendus) oli alles, see oli lihtsalt nähtamatuks muutunud. Kui algpõhjus leiti, lahendati nii krahh kui ka andmete kadu. Õppetund: vaigistamine ei lahenda.
Juhtum 3 – andmed lekkisid logisse. Auditi käigus leiti, et kasutajate täisnimed ja telefoninumbrid kirjutati rakenduse krahhilogidesse. Arendajad kleepisid need logid regulaarselt AI-sse ja parandasid vead; Seega on isikuandmed kustunud juba kuid. Logid maskeeriti ja protsess parandati. Õppetund: konfidentsiaalsus kehtib isegi silumisel.
Nõrk viip / Tugev viip
Kehv viip: "Miks see viga ilmneb? [virna jälg]"
Tugev viip: "See krahh toimub minu Androidi rakenduses. Kontekst:- Tegevuse ajal: kasutaja lisab ostukorvi toote üksikasjadest - Ainult mõnel seadmel, väikese RAM-i mudelitel - Seotud kood: [ViewModel and Repository part] - Krahhilogi (isikuandmed on kustutatud): [pinu jälg]Loetlege 3 kõige tõenäolisemat algpõhjust. Iga jaoks:1) Kuidas ma ei teata, kuidas ma saan parandada. oletus, kus te pole kindel."
Kopeeritavad mallid
Krahhianalüüsi mall:"Analüüsige järgmist krahhi. Kontekst: [mida teete, mis seade/versioon]. Asjakohane kood: [kood]. Krahhilogi (isikuandmed kustutatud): [jälg]. Esitage 3 kõige tõenäolisemat algpõhjust ja kinnitus + püsiparandus. Märkige ka lahendused, mis vaigistavad sümptomi."
Algpõhjuse mall: "See väärtus tuleb [null/false] ootamatult. Jälgige andmevoogu sisendist kuni selle punktini: kus see võib kaduda või rikkuda? Öelge mulle, kust ma peaksin igal etapil kontrollima. [kood]."
Logi lugemise mall: "Tõlgenda seda logiväljundit: millised sündmused toimusid järjekorras, kus on kõrvalekalle, milline oli viimane tervislik samm enne viga? [log — isikuandmed kustutati]"
Reprodutseerimismall: "Milliseid samme, seadme olekuid ja andmeid peaksin proovima selle vea usaldusväärseks taasesitamiseks? Loetlege tõenäosuse järjekorras tingimused, mis võivad vea vallandada. [kirjeldus]"
Levinud vead
- Kontekstivaba virnajälje andmine. Ilma asjakohase koodi ja stsenaariumita teeb AI üldist prognoosi.
- Isikuandmete kleepimine AI-sse koos logidega. Konfidentsiaalsuse rikkumine; kõigepealt mask.
- Vaigistage sümptom. Krahhi varjamine try-catchiga jätab juurprobleemi ja tekitab uusi probleeme.
- Esimese soovituse rakendamine seda kinnitamata. AI diagnoos on hüpotees; Kinnitage koodis.
- Proovin seda emulaatoris reprodutseerida. Mõned vead ilmuvad ainult tegeliku seadme/seisundi korral.
- Pärast korrigeerimist ei testita uuesti. Parandus võis midagi muud rikkuda; Kontrollige regressiooni.
Kokkuvõttes
Üks valdkondi, kus tehisintellekt paistab silma, on krahhilogide lugemine ja võimalike põhjuste väljaselgitamine; Diagnoosi kvaliteet paraneb oluliselt, kui kontekst on antud. Kuid lõplik diagnoos ja parandus kuuluvad inimesele: AI soovitus on hüpotees, mida kontrollitakse koodi ja testimisega. Eesmärk ei ole vaigistada sümptomit, vaid lahendada algpõhjus; Vaigistatud viga naaseb tavaliselt teisel kujul. Krahhilogid võivad sisaldada isikuandmeid; Maskeerige see enne tehisintellektile andmist ja ärge kirjutage isikuandmeid algusest peale oma logidesse.
Rakenduse ülesanne
Võtke kokku krahhilogi (või näidis, mille loote tehisintellektist), maskeerige selles kõik isiklikud / eristavad andmed ja edastage need tehisintellektile koos "Kõrgeanalüüsi malliga". Eristage, millised algpõhjuste AI loendid on tegelikud parandused ja millised vaid vaigistavad. Rakendage valitud püsiparandus ja veenduge, et viga on kadunud ja uusi probleeme ei teki.
kontrollnimekiri
- [ ] Olen andnud krahhilogi koos asjakohase koodi ja stsenaariumi kontekstiga
- [ ] Maskeerisin logidesse isiklikud/eristatavad andmed
- [ ] Küsisin tehisintellekti algpõhjust ja püsivat lahendust, mitte vaigistamist
- [ ] Kontrollisin diagnoosi koodis ja testides, pimesi ei rakendanud
- [ ] Pärast parandamist testisin, et viga kadus ja taandarengut ei toimunud
- [ ] Kontrollisin, et mu rakendus ei kirjutaks oma logidesse isikuandmeid