Ieguvumi:
- Spēja ātri sašaurināt iespējamos pamatcēloņus, piešķirot avāriju ierakstus (steka pēdas) mākslīgajam intelektam ar attiecīgo kodu un scenārija kontekstu
- Spēja neatgriezeniski atrisināt galveno cēloni, nevis apstiprināt AI diagnozi kā hipotēzi kodā un pārbaudīt un apklusināt simptomu
- Privātuma aizsardzība atkļūdošanas laikā, maskējot personas datus avāriju ierakstos un žurnālos
Katrs pieteikums rada kļūdas; Labu izstrādātāju atšķir tas, cik ātri viņi atrod un novērš kļūdas. Mobilā atkļūdošana — problēmas avota atrašana un novēršana — ir īpaši sarežģīta, jo kļūda rodas lietotāja ierīcē, vidē, kuru jūs neredzat. Lielāko daļu laika jums ir tikai avāriju žurnāls (avāriju žurnāls / steka izsekošana — tehniska informācija par to, kur lietojumprogramma nokļuva, kad tā avarēja). AI ir ārkārtīgi spēcīgs, lai lasītu šos noslēpumainos ierakstus, uzskaitītu iespējamos cēloņus un piedāvātu risinājumus. Šajā nodaļā mēs iemācīsimies izmantot mākslīgo intelektu kā “kļūdu detektīvu”, taču uzliksim jums atbildību par galīgās diagnozes pārbaudi un labošanu.
Avāriju žurnāla lasīšana: kur AI spīd visspilgtāk
Avāriju žurnāls ir garš un biedējošs teksts; nepieredzējis izstrādātājs nezinās, kur meklēt. AI parsē šo tekstu sekundēs: kurā rindā tas avarēja, kurš izņēmums tika izmests, kāds ir iespējamais iemesls. Izplatītas mobilo ierīču kļūdas ir acīmredzamas, un AI tās ātri atpazīst: NullPointerException (mēģina piekļūt nulles vērtībai), IndexOutOfBoundsException (piekļūst neesošam saraksta elementam) operētājsistēmā Android, EXC_BAD_ACCESS (piekļūst atbrīvotajai atmiņai) operētājsistēmā iOS, negaidīti atrasts nulle (piespiežot nill).
Visizplatītākie mobilo sakaru avāriju veidi un to tipiskie cēloņi ir šādi:
Kļūda (izņēmums)
Platforma
tipisks cēlonis
NullPointerException
Android
Piekļuve nulles vērtībai
IndexOutOfBoundsException
Android
Piekļūst neesošam saraksta elementam
negaidīti atrasts nulle
iOS
Piespiedu attīšana nulle nav obligāta (!)
EXC_BAD_ACCESS
iOS
Piekļuve atbrīvotajai atmiņai
ANR/iesaldēšana
Android
Ilga/smaga galvenā vītnes apstrāde
Soli pa solim atkļūdošanas plūsma:
- Savāc ierakstu. Apkopojiet avāriju žurnālu, kļūdas ziņojumu un darbības, lai to reproducētu, ja iespējams.
- Piešķiriet AI kontekstu. Pastāstiet man ne tikai kļūdu, bet arī attiecīgo koda daļu un to, kā tas avarēja.
- Jautājiet par iespējamiem cēloņiem. "Pastāstiet man 3 visticamākos cēloņus un to, kā tos pārbaudīt."
- Pārbaudīt. Apstipriniet piedāvāto iemeslu kodā un testēšanā; Nelabojiet to ar minējumiem.
- Labojiet to un pārbaudiet vēlreiz. Pārbaudiet, vai kļūda patiešām ir pazudusi un vai nav ģenerētas jaunas kļūdas.
Padoms. Nododot avāriju žurnālu AI, iekļaujiet arī attiecīgo koda fragmentu. Tikai ar steka izsekošanu AI veic vispārīgas prognozes; Kad redzat kodu, iespēja atrast precīzu līniju un patieso cēloni ievērojami palielinās. Konteksts nosaka diagnozes kvalitāti.
Personas datu slazds
Avāriju žurnālos un žurnālos bieži ir ietverti lietotāja dati: e-pasts, lietotāja ID, atrašanās vieta, pat veidlapas saturs. Šī ieraksta ielīmēšana mākslīgajā intelektā tādā veidā, kā tas ir, ir personas datu noplūde trešajai pusei un ir KVKK / GDPR pārkāpums. Pirms ieraksta iesniegšanas notīriet (maskējiet) personiskās zonas. Tāpat esiet piesardzīgs, lai no sākuma neierakstītu personas datus savas lietojumprogrammas žurnālos; Labs žurnāls apraksta problēmu, bet neatklāj identitāti.
Uzmanību: AI ieteiktais labojums var “apklusināt kļūdu”, bet neatrisināt galveno cēloni. Piemēram, iesaiņojot NullPointerException ar nulles pārbaudi, avārija tiks apturēta, taču, ja neizprotat, kāpēc vērtība ir nulle, faktiskā loģikas kļūda turpināsies. Ārstējiet slimību, nevis simptomu.
Pamatcēloņu analīze
Profesionālās atkļūdošanas mērķis nav apklusināt kļūdu, bet gan atrast galveno cēloni. Es jautāju AI "kāpēc tas varētu būt nulle, kur tas varētu būt pazudis datu plūsmā?" jautājot: "Kā es varu to apklusināt?" Tas ir daudz vērtīgāk nekā lūgt. Kad galvenais cēlonis ir atrasts, uzreiz tiek novērsti desmitiem vienas un tās pašas kļūdas variantu. AI labi pārvalda šo ķēdes argumentāciju: sekojiet datiem no ievades līdz izvadei un lūdziet to padomāt par to, kur tie sabojājas.
trīs mini futrāļi
1. gadījums — 2 stundu darbs 10 minūtēs. Izstrādātājs pavadīja 2 stundas, meklējot kļūdu, kas avarēja tikai konkrētam Samsung modelim. Nodeva avāriju žurnālu (personīgo zonu tīrīšana) AI; YZ teica, ka kļūda norāda uz atmiņas pārplūdi, kas rodas ar citu šīs ierīces kameras izšķirtspēju. Ar pavedienu iemesls tika atrasts 10 minūtēs. AI paātrināja meklēšanu, cilvēks pārbaudīja risinājumu.
2. gadījums — apklusinātā kļūda ir atgriezusies. Viena komanda apklusināja atkārtotu avāriju, izmantojot AI ieteikumu, lai mēģinātu to notvert. Avārija apstājās, bet lietotāji sāka sūdzēties, ka "dati netiek saglabāti"; jo īstā problēma (datu bāzes savienojums) joprojām pastāvēja, tā tikko bija kļuvusi neredzama. Kad galvenais iemesls tika atrasts, tika novērsta gan avārija, gan datu zudums. Nodarbība: apklusināšana nav atrisināšana.
3. gadījums — datu noplūde žurnālā. Auditā konstatēts, ka lietotnes avāriju žurnālos tika ierakstīti lietotāju pilni vārdi un tālruņu numuri. Izstrādātāji regulāri ielīmēja šos žurnālus AI un laboja kļūdas; Tātad personas dati pazūd jau vairākus mēnešus. Baļķi tika maskēti un process tika labots. Nodarbība: konfidencialitāte tiek piemērota pat atkļūdošanas laikā.
Vāja uzvedne / spēcīga uzvedne
Slikta uzvedne: "Kāpēc rodas šī kļūda? [steka izsekošana]"
Spēcīga uzvedne: "Šī avārija notiek manā Android lietotnē. Konteksts: - Veicot darbību: lietotājs pievieno grozam, izmantojot detalizētu informāciju par produktu - Tikai dažās ierīcēs, modeļos ar zemu RAM - Saistītais kods: [ViewModel and Repository part] - Avāriju žurnāls (personiskie dati ir notīrīti): [steka izsekošana] Norādiet 3 visticamākos galvenos cēloņus. Katram no:1) Kā es varu labot (nepārbaudīt). pieņēmums, kur jūs neesat pārliecināts."
Kopējamas veidnes
Avāriju analīzes veidne:"Analizējiet šādu avāriju. Konteksts: [ko jūs darāt, kura ierīce/versija]. Attiecīgais kods: [kods]. Avāriju žurnāls (personiskie dati ir dzēsti): [izsekošana]. Norādiet 3 visdrīzākos galvenos cēloņus un verifikāciju + pastāvīgu labojumu katram. Atzīmējiet arī risinājumus, kas apklusina simptomu."
Galvenā iemesla veidne: "Šī vērtība negaidīti tiek parādīta [null/false]. Sekojiet datu plūsmai no ievades līdz šim punktam: kur tā var tikt pazaudēta vai bojāta? Pastāstiet man, kur man jāpārbauda katrā posmā. [kods]."
Žurnāla lasīšanas veidne: "Interpretējiet šo žurnāla izvadi: kādi notikumi notika secībā, kur ir novirze, kāds bija pēdējais pareizais solis pirms kļūdas? [žurnāls — personas dati ir notīrīti]"
Reproducēšanas veidne: "Kādas darbības, ierīces stāvokļi un dati man jāmēģina, lai ticami reproducētu šo kļūdu? Norādiet apstākļus, kas varētu izraisīt kļūdu, iespējamības secībā. [apraksts]."
Biežas kļūdas
- Bezkonteksta steka izsekošanas nodrošināšana. Bez atbilstoša koda un scenārija AI veic vispārīgas prognozes.
- Personas datu ielīmēšana AI kopā ar žurnāliem. Konfidencialitātes pārkāpums; vispirms maska.
- Apklusiniet simptomu. Avārijas slēpšana ar try-catch palīdzību atstāj saknes problēmu un rada jaunas problēmas.
- Pirmā ieteikuma piemērošana, to nepārbaudot. AI diagnoze ir hipotēze; Apstipriniet kodā.
- Mēģina to reproducēt emulatorā. Dažas kļūdas parādās tikai faktiskajā ierīcē/stāvoklī.
- Pēc korekcijas nepārbauda. Labojums, iespējams, ir sabojājis kaut ko citu; Pārbaudiet regresiju.
Rezumējot
Viena no jomām, kurā AI izceļas, ir avāriju žurnālu lasīšana un iespējamo cēloņu novēršana; Diagnozes kvalitāte ievērojami uzlabojas, ja tiek sniegts konteksts. Bet galīgā diagnoze un korekcija pieder cilvēkam: AI ierosinājums ir hipotēze, kas pārbaudīta kodā un testēšanā. Mērķis nav apklusināt simptomu, bet gan novērst galveno cēloni; Apklusinātā kļūda parasti atgriežas citā formā. Avāriju žurnālos var būt personas dati; Maskējiet to pirms nodošanas AI un nerakstiet personas datus savos žurnālos no sākuma.
Lietojumprogrammas uzdevums
Paņemiet avāriju žurnālu (vai paraugu, ko ģenerējat no AI), maskējiet tajā visus personiskos/atšķirīgos datus un nododiet to AI, izmantojot “Avāriju analīzes veidni”. Atšķiriet, kuri no galvenajiem cēloņiem AI saraksti ir faktiskie labojumi un kuri tikai apklusina. Lietojiet izvēlēto pastāvīgo labojumu un pārbaudiet, vai kļūda ir pazudusi un nerodas jaunas problēmas.
kontrolsaraksts
- [ ] Esmu sniedzis avāriju žurnālu ar atbilstošu kodu un scenārija kontekstu
- [ ] Es žurnālos maskēju personas/atšķirīgus datus
- [ ] Es prasīju AI galveno cēloni un pastāvīgu labojumu, nevis klusēšanu
- [ ] Es pārbaudīju diagnozi kodā un testēšanā, es to nepiemēroju akli
- [ ] Pēc labošanas es pārbaudīju, vai kļūda ir pazudusi un nav regresijas
- [ ] Es pārbaudīju, vai mana lietojumprogramma savos žurnālos neieraksta personas datus