Enhet 7 / 11

Felsökning och kraschanalys med artificiell intelligens

Vinster:

  • Förmåga att snabbt begränsa möjliga grundorsaker genom att ge kraschposter (stackspår) till artificiell intelligens med relevant kod och scenariokontext
  • Förmåga att permanent lösa grundorsaken snarare än att validera AI:s diagnos som en hypotes i kod och testning och tysta symtomet
  • Skyddar integriteten vid felsökning genom att maskera personlig data i kraschregister och loggar

Varje applikation ger fel; Det som utmärker en bra utvecklare är hur snabbt de hittar och fixar buggar. Mobilfelsökning – att hitta och åtgärda källan till ett problem – är särskilt svårt eftersom felet uppstår på användarens enhet, i en miljö som du inte kan se. För det mesta är allt du har en kraschlogg (kraschlogg / stackspårning — en teknisk uppdelning av var applikationen tog vägen när den kraschade). AI är extremt kraftfull när det gäller att läsa dessa kryptiska register, lista möjliga orsaker och föreslå lösningar. I den här enheten kommer vi att lära oss hur man använder AI som en "buggdetektiv" men lämnar dig med ansvaret för att verifiera den slutliga diagnosen och fixa.

Läser kraschloggen: Där AI lyser starkast

En krocklogg är en lång och skrämmande text; oerfaren utvecklare vet inte var de ska leta. AI analyserar denna text på några sekunder: vid vilken rad kraschade den, vilket undantag kastades, vad är den möjliga orsaken. Vanliga mobilfel är uppenbara och AI:n känner igen dem snabbt: NullPointerException (försöker få åtkomst till ett nollvärde), IndexOutOfBoundsException (åtkomst till ett icke-existerande listelement) på Android, EXC_BAD_ACCESS (åtkomst till frigjort minne) på iOS, hittade oväntat noll (tvingar en valfri).

De vanligaste typerna av mobilkrascher och deras typiska orsaker är följande:

Fel (undantag)

Plattform

typisk orsak

NullPointerException

Android

Åtkomst till ett nollvärde

IndexOutOfBoundsException

Android

Åtkomst till icke-existerande listelement

oväntat hittat noll

iOS

Tvinga upp ett noll valfritt (!)

EXC_BAD_ACCESS

iOS

Åtkomst till frigjort minne

ANR/frys

Android

Lång/tung bearbetning på huvudtråd

Steg för steg felsökningsflöde:

  1. Samla rekordet. Sätt ihop kraschloggen, felmeddelandet och steg för att återskapa den om möjligt.
  2. Ge AI-kontexten. Berätta inte bara om felet, utan den relevanta kodbiten och vad den kraschade gör.
  3. Fråga efter möjliga orsaker. "Berätta för mig de tre mest troliga orsakerna och hur man verifierar var och en."
  4. Kontrollera. Bekräfta det föreslagna skälet i kod och testning; Fixa det inte genom att gissa.
  5. Fixa det och testa igen. Kontrollera att felet faktiskt är borta och att inga nya fel genereras.
Tips: När du ger kraschloggen till AI:n, inkludera även det relevanta kodavsnittet. Endast med stackspårning gör AI generella förutsägelser; När du ser koden ökar sannolikheten avsevärt att hitta den exakta linjen och den verkliga orsaken. Sammanhanget bestämmer kvaliteten på diagnosen.

Personuppgiftsfälla

Kraschloggar och loggar innehåller ofta användardata: e-post, användar-ID, plats, till och med formulärinnehåll. Att klistra in denna post i AI som den är läcker personuppgifter till tredje part och är ett brott mot KVKK/GDPR. Rensa (maskera) personliga områden innan du skickar in inspelningen. Var också noga med att inte skriva personuppgifter till din applikations loggar från början; En bra logg beskriver problemet men avslöjar inte identiteten.

Varning: Den korrigering som föreslås av AI kan "tysta buggen" men kanske inte lösa grundorsaken. Om du till exempel lindar en NullPointerException med en nollkontroll kommer kraschen att stoppa, men om du inte tar reda på varför värdet är null kommer det faktiska logiska felet att fortsätta. Behandla sjukdomen, inte symtomet.

Grundorsaksanalys

Syftet med professionell felsökning är inte att tysta felet utan att hitta grundorsaken. Jag frågade AI:en "varför kan detta vara null, var kan det ha försvunnit i dataflödet?" frågar, "hur tystar jag detta?" Det är mycket mer värdefullt än att fråga. När grundorsaken har hittats löses dussintals varianter av samma fel på en gång. AI är bra på detta kedjeresonemang: följ data från input till output och be den tänka på var den går sönder.

tre minifodral

Fall 1 — 2 timmars arbete på 10 minuter. En utvecklare ägnade två timmar åt att leta efter en bugg som bara kraschade på en specifik Samsung-modell. Gav krockloggen (rensa personliga områden) till AI; YZ sa att felet pekar på ett minnesspill som inträffar med en annan kameraupplösning för den enheten. Med ledtråden hittades orsaken på 10 minuter. AI påskyndade sökningen, människan verifierade lösningen.

Fall 2 — Den tystade buggen är tillbaka. Ett team tystade en återkommande krasch genom att använda ett AI-förslag för att försöka fånga den. Kraschen upphörde, men användare började klaga på att "data inte sparas"; eftersom det verkliga problemet (databasanslutningen) fortfarande fanns där, hade det precis blivit osynligt. När grundorsaken väl hittats löstes både kraschen och dataförlusten. Lektion: tystnad löser inte.

Fall 3 — Data läckte i logg. En granskning visade att användarnas fullständiga namn och telefonnummer skrevs in i appens kraschloggar. Utvecklare klistrade rutinmässigt in dessa loggar i AI och fixade buggar; Så personuppgifter har gått ut i månader. Loggar maskerades och processen korrigerades. Lärdom: konfidentialitet gäller även vid felsökning.

Svag prompt / Stark prompt

Dålig uppmaning: "Varför uppstår det här felet? [stackspårning]"

Stark uppmaning: "Den här kraschen sker i min Android-app. Sammanhang:- Medan du gör: användaren lägger till i kundvagnen från produktdetaljer- Endast på vissa enheter, modeller med låg RAM- Relaterad kod: [ViewModel and Repository-del]- Crash-logg (personlig data rensas): [stackspårning] Lista de 3 mest sannolika grundorsakerna. För varje:1) How do I verify your silenct 2. antagande där du inte är säker."

Kopierbara mallar

Kraschanalysmall:" Analysera följande krasch. Kontext: [vad du gör, vilken enhet/version]. Relevant kod: [kod]. Kraschlogg (personlig data rensad): [spårning]. Ange 3 mest troliga grundorsaker och verifiering + permanent korrigering för varje. Markera även lösningar som tystar symptomet."

Grundorsaksmall: "Detta värde kommer [null/falskt] oväntat. Följ dataflödet från ingången till denna punkt: var kan det gå förlorat eller skadas? Berätta för mig var jag ska kontrollera i varje steg. [kod]"

Loggläsningsmall: "Tolka denna loggutgång: vilka händelser hände i ordning, var är avvikelsen, vilket var det senaste sunda steget före felet? [logg — personuppgifter raderade]"

Återgivningsmall: "Vilka steg, enhetstillstånd och data ska jag försöka återskapa detta fel på ett tillförlitligt sätt? Ange villkoren som kan utlösa felet i sannolikhetsordning. [beskrivning]"

Vanliga misstag

  • Ger kontextfri stackspårning. Utan relevant kod och scenario gör AI generella förutsägelser.
  • Klistra in personuppgifter i AI tillsammans med loggar. Brott mot konfidentialitet; mask först.
  • Tysta symptomet. Att dölja kraschen med try-catch lämnar rotproblemet och skapar nya problem.
  • Tillämpar det första förslaget utan att verifiera det. Diagnosen AI är en hypotes; Bekräfta i koden.
  • Försöker återskapa det i emulatorn. Vissa fel visas bara på den faktiska enheten/tillståndet.
  • Testar inte om efter korrigering. Korrigeringen kan ha brutit något annat; Kontrollera regression.

Sammanfattningsvis

Ett av de områden där AI utmärker sig är att läsa kraschloggar och reda ut möjliga orsaker; Kvaliteten på diagnosen förbättras avsevärt när sammanhanget ges. Men den slutliga diagnosen och korrigeringen tillhör människan: AI:s förslag är en hypotes, verifierad i kod och testning. Syftet är inte att tysta symtomet utan att lösa grundorsaken; Det tystade felet återkommer vanligtvis i en annan form. Kraschloggar kan innehålla personuppgifter; Maskera det innan du ger det till AI och skriv inte personlig data i dina loggar från början.

Applikationsuppgift

Ta en kraschlogg du har (eller provet du genererar från AI), maskera eventuell personlig/särskiljande data i den och ge den till AI:n med "Krashanalysmallen". Särskilj vilka av grundorsakerna AI-listor som är faktiska korrigeringar och vilka som bara tystar. Använd den permanenta korrigeringen du valde och kontrollera att felet är borta och att inga nya problem uppstår.

checklista

  • [ ] Jag har gett kraschloggen med relevant kod och scenariokontext
  • [ ] Jag maskerade personliga/särskiljande data i loggarna
  • [ ] Jag frågade AI om grundorsaken och permanent fix, inte tystnad
  • [ ] Jag verifierade diagnosen i kod och testning, jag tillämpade den inte blint
  • [ ] Efter korrigeringen testade jag att felet var borta och att det inte fanns någon regression
  • [ ] Jag kontrollerade att min ansökan inte skriver personuppgifter i sina loggar