Enhed 7 / 11

Fejlretning og nedbrudsanalyse med kunstig intelligens

Gevinster:

  • Evne til hurtigt at indsnævre mulige rodårsager ved at give nedbrudsregistreringer (stackspor) til kunstig intelligens med den relevante kode og scenariekontekst
  • Evne til permanent at løse årsagen i stedet for at validere AI's diagnose som en hypotese i kode og testning og dæmpning af symptomet
  • Beskyttelse af privatlivets fred under fejlretning ved at maskere personlige data i nedbrudsregistre og logfiler

Hver applikation giver fejl; Det, der kendetegner en god udvikler, er, hvor hurtigt de finder og retter fejl. Mobil debugging – at finde og rette kilden til et problem – er særligt vanskelig, fordi fejlen opstår på brugerens enhed i et miljø, som du ikke kan se. Det meste af tiden er alt, hvad du har, en crash-log (crash-log / staksporing - en teknisk opdeling af, hvor applikationen gik hen, da den styrtede ned). AI er ekstremt kraftfuld til at læse disse kryptiske optegnelser, liste mulige årsager og foreslå løsninger. I denne enhed lærer vi, hvordan man bruger AI som en "bug-detektiv", men efterlader dig med ansvaret for at verificere den endelige diagnose og rette.

Læsning af crash-loggen: Hvor AI skinner klarest

En crash-log er en lang og skræmmende tekst; uerfarne udviklere ved ikke, hvor de skal lede. AI analyserer denne tekst på få sekunder: på hvilken linje den styrtede ned, hvilken undtagelse blev kastet, hvad er den mulige årsag. Almindelige mobilfejl er indlysende, og AI genkender dem hurtigt: NullPointerException (forsøger at få adgang til en nulværdi), IndexOutOfBoundsException (adgang til et ikke-eksisterende listeelement) på Android, EXC_BAD_ACCESS (adgang til frigjort hukommelse) på iOS, uventet fundet nul (tvinger et valgfrit).

De mest almindelige typer af mobilnedbrud og deres typiske årsager er som følger:

Fejl (undtagelse)

Platform

typisk årsag

NullPointerException

Android

Adgang til en nulværdi

IndexOutOfBoundsException

Android

Adgang til ikke-eksisterende listeelement

uventet fundet nul

iOS

Tving udpakning en nul valgfri (!)

EXC_BAD_ACCESS

iOS

Adgang til frigjort hukommelse

ANR/frys

Android

Lang/tung bearbejdning på hovedtråd

Trin for trin fejlretningsflow:

  1. Saml rekorden. Sammensæt nedbrudsloggen, fejlmeddelelsen og trin til at genskabe den, hvis det er muligt.
  2. Giv AI-konteksten. Fortæl mig ikke kun fejlen, men det relevante stykke kode, og hvad det styrtede ned.
  3. Spørg efter mulige årsager. "Fortæl mig de 3 mest sandsynlige årsager, og hvordan man verificerer hver."
  4. Verificere. Bekræft den foreslåede årsag i kode og test; Løs det ikke ved at gætte.
  5. Ret det og test igen. Kontroller, at fejlen faktisk er væk, og at der ikke genereres nye fejl.
Tip: Når du giver crash-loggen til AI'en, skal du også inkludere det relevante kodestykke. Kun med staksporing foretager AI generel forudsigelse; Når du ser koden, øges sandsynligheden for at finde den nøjagtige linje og den egentlige årsag meget. Kontekst bestemmer kvaliteten af ​​diagnosen.

Persondatafælde

Crash-logs og logs indeholder ofte brugerdata: e-mail, bruger-id, placering, endda formularindhold. Indsættelse af denne registrering i AI’en som den er, lækker personlige data til tredjeparten og er en overtrædelse af KVKK/GDPR. Ryd (masker) personlige områder, før du sender optagelsen. Vær også forsigtig med ikke at skrive personlige data til din applikations logfiler fra begyndelsen; En god log beskriver problemet, men afslører ikke identiteten.

Forsigtig: Rettelsen foreslået af AI kan "dæmpe fejlen", men løser muligvis ikke hovedårsagen. For eksempel vil indpakning af en NullPointerException med et nul-tjek stoppe nedbruddet, men hvis du ikke finder ud af, hvorfor værdien er null, vil den faktiske logiske fejl fortsætte. Behandl sygdommen, ikke symptomet.

Grundårsagsanalyse

Formålet med professionel fejlfinding er ikke at dæmpe fejlen, men at finde årsagen. Jeg spurgte AI "hvorfor kan dette være null, hvor kan det være gået tabt i datastrømmen?" spørger, "hvordan dæmper jeg dette?" Det er meget mere værdifuldt end at spørge. Når hovedårsagen er fundet, løses snesevis af variationer af den samme fejl på én gang. AI er god til dette kæderæsonnement: følg dataene fra input til output og bed det om at tænke over, hvor det bryder sammen.

tre minisager

Case 1 — 2 timers arbejde på 10 minutter. En udvikler brugte 2 timer på at søge efter en fejl, der kun styrtede ned på en specifik Samsung-model. Gav nedstyrtningsloggen (rydning af personlige områder) til AI; YZ sagde, at fejlen peger på et hukommelsesoverløb, der opstår med en anden kameraopløsning på den enhed. Med ledetråden blev årsagen fundet på 10 minutter. AI fremskyndede søgningen, mennesket bekræftede løsningen.

Case 2 - Den forstummede fejl er tilbage. Et hold dæmpede et tilbagevendende nedbrud ved at bruge et AI-forslag til at prøve at fange det. Nedbruddet stoppede, men brugerne begyndte at klage over, at "data ikke gemmes"; fordi det virkelige problem (databaseforbindelse) stadig var der, var det bare blevet usynligt. Når hovedårsagen blev fundet, blev både nedbruddet og datatab løst. Lektion: tavshed løser ikke.

Case 3 — Data lækket i log. En revision viste, at brugernes fulde navne og telefonnumre var skrevet ind i appens crash-logs. Udviklere indsatte rutinemæssigt disse logfiler i AI og rettede fejl; Så personlige data har været ude i flere måneder. Logfiler blev maskeret, og processen blev rettet. Lektion: fortrolighed gælder selv ved fejlretning.

Svag prompt / Stærk prompt

Dårlig prompt: "Hvorfor opstår denne fejl? [staksporing]"

Stærk prompt: "Dette nedbrud sker i min Android-app. Kontekst:- Mens du gør: bruger tilføjer til indkøbskurv fra produktdetaljer- Kun på nogle enheder, modeller med lav RAM- Relateret kode: [ViewModel and Repository-del]- Crash-log (personlige data ryddet): [staksporing] Angiv de 3 mest sandsynlige rodårsager. For hver:1) How do I verifying, stilling, 2) Permanenct. antagelse, hvor du ikke er sikker."

Kopierbare skabeloner

Crash-analyseskabelon:"Analyser følgende nedbrud. Kontekst: [hvad du laver, hvilken enhed/version]. Relevant kode: [kode]. Crash-log (personlige data ryddet): [sporing]. Giv 3 mest sandsynlige grundårsager og verifikation + permanent rettelse for hver. Marker også løsninger, der dæmper symptomet."

Grundskabelon: "Denne værdi kommer uventet [null/false]. Følg datastrømmen fra input til dette punkt: hvor kan det gå tabt eller beskadiget? Fortæl mig, hvor jeg skal tjekke på hvert trin. [kode]"

Loglæsningsskabelon: "Fortolk dette logoutput: hvilke hændelser skete i rækkefølge, hvor er abnormiteten, hvad var det sidste sunde trin før fejlen? [log — personlige data slettet]"

Gengivelsesskabelon: "Hvilke trin, enhedstilstande og data skal jeg forsøge at reproducere denne fejl pålideligt? Angiv de forhold, der kunne udløse fejlen i rækkefølge efter sandsynlighed. [beskrivelse]"

Almindelige fejl

  • Giver kontekstfri stakspor. Uden relevant kode og scenarie laver AI en generel forudsigelse.
  • Indsættelse af personlige data i AI sammen med logfiler. Brud på fortrolighed; maske først.
  • Dæmp symptomet. At skjule nedbruddet med try-catch efterlader rodproblemet og skaber nye problemer.
  • Anvender det første forslag uden at bekræfte det. Diagnosen AI er en hypotese; Bekræft i kode.
  • Forsøger at gengive det i emulatoren. Nogle fejl vises kun på den faktiske enhed/tilstand.
  • Gentester ikke efter korrektion. Rettelsen kan have ødelagt noget andet; Tjek regression.

Sammenfattende

Et af de områder, hvor AI udmærker sig, er at læse crashlogs og sortere mulige årsager; Kvaliteten af ​​diagnosen forbedres væsentligt, når konteksten er givet. Men den endelige diagnose og korrektion tilhører mennesket: AI's forslag er en hypotese, verificeret i kode og test. Målet er ikke at dæmpe symptomet, men at løse den grundlæggende årsag; Den stillede fejl vender normalt tilbage i en anden form. Crash-logs kan indeholde personlige data; Mask det, før du giver det til AI, og skriv ikke personlige data i dine logfiler fra begyndelsen.

Ansøgningsopgave

Tag en crash-log, du har (eller prøven, du genererer fra AI'en), masker eventuelle personlige/karakteristiske data i den, og giv den til AI'en med "Crash-analyseskabelonen". Skelne, hvilke af årsagerne til AI-listerne, der er faktiske rettelser, og hvilke der bare dæmper. Anvend den permanente rettelse, du valgte, og bekræft, at fejlen er væk, og der ikke opstår nye problemer.

tjekliste

  • [ ] Jeg har givet crashloggen med relevant kode og scenariekontekst
  • [ ] Jeg maskerede personlige/karakteristiske data i loggene
  • [ ] Jeg spurgte AI om rodårsag og permanent rettelse, ikke lydløs
  • [ ] Jeg bekræftede diagnosen i kode og test, jeg anvendte den ikke blindt
  • [ ] Efter rettelsen testede jeg, at fejlen var væk, og der var ingen regression
  • [ ] Jeg kontrollerede, at min ansøgning ikke skriver personlige data i sine logfiler