Egység 5 / 12

Hibakeresés és hibaelhárítás

Nyereség:

  • Képes hatékonyan leírni a hibákat az AI-ban hibaüzenettel, veremkövetéssel és a legkisebb reprodukciós példánysal
  • Szisztematikus hibakeresési folyamat futtatásának képessége mesterséges intelligencia segítségével, hogy megtalálja a kiváltó okot hipotézisek megfogalmazásával és lépésről lépésre szűkítésével
  • Lehetőség annak ellenőrzésére, hogy az AI által javasolt javítás valóban megoldotta a problémát reprodukálással és regressziós teszteléssel

A hibakeresés feladata annak kiderítése, hogy egy program miért viselkedik a várttól eltérően, és kijavítsa azt, és ez a legtöbb mérnök idejét emészti fel. A jó hibakeresés nem találgatáson alapul, hanem szisztematikus szűkítésen: tünet tisztázása, hipotézis, hipotézis tesztelése, kiváltó ok elérése. Az AI nagyon erős partner ebben a ciklusban; De csak akkor, ha megadja a megfelelő információkat. A „kód nem működik, javítsd ki” kimondása arra kényszeríti az AI-t, hogy találgasson és általános javaslatokat tegyen. Adja meg neki a teljes hibaüzenetet, a verem nyomkövetését és a legkisebb reprodukciós mintát, és együtt megtalálja a kiváltó okot.

Ebben az egységben látni fogjuk, hogyan írhatunk le hatékonyan egy hibát az AI-ban, hogyan szűkíthetjük le a hipotéziseket lépésről lépésre, és regressziós teszteléssel ellenőrizzük, hogy a javasolt javítás valóban megoldja a problémát. Ne feledje: egy hiba "javítása" és "a hiba tünetének elnyomása" két különböző dolog; A kiváltó ok megtalálása nélkül végrehajtott javítás a hibát egy másik helyre helyezi át.

Fogalmak: Stack trace: Kiírat, amely megmutatja, hogy mely függvények milyen sorrendben kerültek meghívásra a hiba idején. Minimális repro: A hibát kiváltó legegyszerűbb, legrövidebb kód/bemenet. Kiváltó ok: A probléma valódi forrása, nem a tünet. Regressziós tesztelés: Olyan tesztelés, amely biztosítja, hogy ugyanaz a hiba ne ismétlődjön meg.

Az AI hibájának leírása

Annak valószínűsége, hogy a mesterséges intelligencia megtalálja a kiváltó okot, egyenesen arányos az Ön által megadott információ minőségével. A jó hibaleírás a következőket tartalmazza: mit próbált megtenni, mire számított, mi történt, a pontos hibaszöveg és veremkövetés, az érintett kód, a környezet (nyelv/verzió/OS) és a hibát okozó legkisebb minta.

  1. Tisztázza a tünetet. "Várható X, aktualizált Y" formátumban.
  2. Illessze be a teljes hibaszöveget, és verem a nyomkövetést. Ne rövidítsd, cenzúrázd, de ne törd meg a szerkezetet.
  3. Adja meg a legkisebb reprodukciót. Minimális bemenet és kód, amely kiváltja a hibát.
  4. Adja meg a környezetet. Nyelvi verzió, könyvtári verzió, futási környezet.

Hatékony hibaleíró prompt: "Hibakeresést végezek. Információ: - Mit próbálok tenni: [X] - Várt viselkedés: [Y] - Valós viselkedés: [Z] - Teljes hibaüzenet és veremnyom: [beillesztés] - Környezet: [nyelv/verzió, könyvtár/verzió]- Minimális érintett kód: [kód] A legvalószínűbb gyökérlistát adj meg először. és mondja meg, hogy melyik csekket kell ellenőrizni."

Az áramlás szűkítése hipotézis alapján

A szisztematikus hibakeresés a lehetőségek egyenkénti kiküszöbölésének művészete. Használjon mesterséges intelligenciát hipotézisek generálásához, és tervezze meg a kísérletet az egyes hipotézisek tesztelésére; Ezután futtassa a kísérletet, és adja vissza az eredményt. Ez a ciklus sokkal gyorsabb, mint a véletlenszerű változtatások és leállások szokása, amit "shotgun hibakeresésnek" neveznek.

Bináris keresés (felező) segítő prompt: "Ez a hiba tegnap nem volt, ma megvan. Azt szeretném megtudni, hogy az utolsó 20 változtatás közül melyik okozta a felezővel járó hibát. Adjon lépésről lépésre tervet: melyik ponton teszteljem, melyik feléig menjek az eredménytől függően. Mondja el azt is, hogy pontosan mit kell ellenőrizni minden lépésnél."

Naplóbeillesztési stratégia prompt: "Nem találom a hibát, mert nem látom a köztes értékeket ebben a függvényben. Mondja meg, hogy mely pontokon kell hozzáadnom azokat a naplósorokat, amelyek melyik változót nyomtatják ki. Adjon hozzá egy "mit fogok tanulni ebből a naplóból" magyarázatot minden naplóhoz. Adja meg azokat a figyelmeztetéseket is, amelyek megakadályozzák, hogy bizalmas adatokat naplózzak."

Tipp: Ha nem tud megoldani egy hibát, a probléma legtöbbször olyan helyen van, ahol hibásan feltételezte. Kérdezd meg a mesterséges intelligencia „milyen feltevésem lehet rossz?” A kérdezés megtöri a vakságodat. A legsúlyosabb hibák ott bújnak meg, ahol azt mondod: "Biztos vagyok benne, hogy ez jól működik".

Gyenge felszólítás / Erős felszólítás

GYENGE:"A kódom hibát ad, javítsd ki: [200 sornyi kód]"(Eredmény: az AI nem tudja, mi a hiba, mi várható; találgatások alapján általános javaslatokat ad, a legtöbb haszontalan.)STRONG:"NullPointerException kivételt kapok. Várható: a felhasználói listát vissza kell adni. Aktuális: Javaslatok felrobbanása [Stack. 17. Minimális ismétlés: Ez akkor fordul elő, ha a felhasználók listája üres, de nem, amikor tele van. Kapcsolódó 15 sor: [kód] Magyarázza el az üres lista indításának okát, majd javasoljon egy javítást.

Az erőteljes prompt kontextusba helyezi a hibát: mely esetben megtörténik (üres lista), mely esetben nem történik meg (teljes lista). Ez az egyetlen nyom ("amikor üres") szinte közvetlenül a kiváltó okra mutat. Mivel ez az információ nem érhető el a gyenge promptban, az AI vak találgatásokat végez.

A javítás ellenőrzése

Egy javítás csak akkor valódi javítás, ha három dolgot tesz:

irányítani

kérdés

Hogyan ellenőrizhető

Megszűnt a hiba?

Most is működik ugyanaz a bejegyzés?

Futtassa újra a minimális reprot

Nincsenek új hibák?

Elromlott még valami?

Futtassa a teljes tesztcsomagot

Nem fog megismétlődni?

Megismétlődik ugyanaz a hiba?

Adjon hozzá regressziós tesztet ehhez a forgatókönyvhöz

A kiváltó ok megtalálása nélkül végzett korrekciók gyakran elnyomják a tünetet. Például, ha egy nulla hibát a "skip if null" szóval glossíroz, akkor a valódi ok: "miért nullázódik az adat?" láthatatlan, és a hiba máshol is megismétlődik.

Mini tokok

1. eset – A tünetelnyomó csapda. A csapat egy alkalmi null hibát elhallgat egy try-catch-el; A hiba eltűnik, de 2 hét múlva az adatok hiányoznak. A valódi ok az, hogy egy szolgáltatás nullát ad vissza időtúllépéskor. Amikor megkérdezed az AI-t, hogy "miért lesz nulla?", kiderül a kiváltó ok; A valódi javítás 1 órát vesz igénybe, de végleges.

2. eset – Minimális repro teljesítmény. A fejlesztő nem tudja kijavítani azt a hibát, amely azt mondja, hogy "időnként összeomlik". Az AI javaslatával a legkisebb bemenetre csökkenti a hibát: a probléma csak a török ​​karaktereket tartalmazó fájlneveknél jelentkezik (kódolási hiba). Ha a 300 sornyi bizonytalanságot 5 sornyi definitív reprora csökkentjük, a megoldás nyilvánvalóvá válik.

3. eset – Anti-regressziós teszt. Az AI kijavítja a dátumszámítási hibát. A mérnök ezzel nem elégedett; regressziós tesztet ad hozzá a hibás forgatókönyvhöz (hónap vége, január 31. + 1 hónap). Amikor 4 hónappal később egy másik változás érinti ugyanazt a területet, a teszt pirosra vált, és a hibát még azelőtt észlelik, hogy elérné a gyártást.

Gyakori hibák

  • Ez azt jelenti, hogy "nem működik, javítsd ki". Hibaszöveg, elvárás és repro nélkül, az AI találgat.
  • Nem ad nyomot a veremnek. A veremnyom gyakran közvetlenül jelzi a kiváltó okot.
  • Folytassa a véletlenszerű változtatásokat. A hipotézis felállítása nélküli kísérletek időt veszítenek.
  • A tünet elfojtása és a kiváltó ok hiánya. A hiba máshol születik újra.
  • Nem biztosítják a javítást regressziós teszteléssel. Ugyanez a hiba csendben visszatér a jövőben.

Összefoglalva

A hatékony hibakeresés szisztematikus szűkítés, nem találgatás. A teljes hibaszöveg, a veremkövetés, a minimális reprodukciós és környezeti információk megadása az AI-nak exponenciálisan növeli a kiváltó ok megtalálásának esélyét. Használjon mesterséges intelligenciát hipotézisek generálásához, és tervezze meg a kísérletet az egyes hipotézisek tesztelésére; Ön futtatja a kísérletet. A javítást csak akkor tekintse "késznek", ha azt látja, hogy a hiba eltűnt, nem vezettek be új hibákat, és regressziós teszt védi.

Pályázati feladat

Vegyünk egy valódi vagy mesterséges hibát. Először csökkentse a hibát a legkisebb reprodukcióra (melyik bemenetben fordul elő, melyikben nem). A hatékony hibarecept-prompt használatával kérjen meg az AI-tól 3 kiváltó ok-hipotézist, és mindegyikhez egy ellenőrzési lépést. Keresse meg a kiváltó okot a hipotézisek egyenkénti tesztelésével, javítsa ki, majd írjon és futtasson egy regressziós tesztet ehhez a forgatókönyvhöz, hogy megmutassa, a hiba eltűnt, és a teszt védelmet nyújt.

ellenőrző lista

  • [ ] Tisztáztam a tünetet "várt vs megvalósult".
  • [ ] Megadtam a teljes hibaszöveget és a veremnyomot az AI-nak.
  • [ ] A hibát a legkisebb reprodukcióra csökkentettem.
  • [ ] A hipotézisek egyenkénti tesztelésével megtaláltam a kiváltó okot.
  • [ ] A tünet elfojtása helyett a kiváltó okot javítottam.
  • [ ] Hozzáadtam, és lefuttattam egy regressziós tesztet ugyanarra a hibára.