Unità 5 / 12

Debugging u Soluzzjoni ta 'problemi

Qligħ:

  • Kapaċità li tiddeskrivi b'mod effettiv bug lill-AI b'messaġġ ta 'żball, traċċa tal-munzell, u l-iżgħar istanza ta' riproduzzjoni
  • Kapaċità li tmexxi fluss sistematiku ta' debugging bl-AI biex issib il-kawża ewlenija billi tagħmel ipotesi u tnaqqasha pass pass
  • Kapaċità li tivverifika li l-iffissar li ssuġġeriet l-AI fil-fatt iffissat il-problema billi r-riproduzzjoni u l-ittestjar tar-rigressjoni

Id-debugging huwa l-kompitu li jiskopri għaliex programm qed iġib ruħu b'mod differenti minn dak mistenni u jiffissah, u jikkonsma ħafna mill-biċċa l-kbira tal-ħin tal-inġiniera. Debugging tajjeb mhuwiex ibbażat fuq logħba guessing, iżda fuq tidjiq sistematiku: iċċara s-sintomu, ipoteżi, ittestja l-ipoteżi, wasal għall-kawża ewlenija. L-AI hija sieħba qawwija ħafna f'dan iċ-ċiklu; Imma biss jekk tagħtih l-informazzjoni korretta. Li tgħid "il-kodiċi ma jaħdimx, waħħalha" iġġiegħel lill-AI taqta u tagħmel suġġerimenti ġenerali. Agħtiha l-messaġġ ta 'żball sħiħ, it-traċċa tal-munzell, u l-iżgħar kampjun ta' riproduzzjoni, u flimkien issib il-kawża ewlenija.

F'din l-unità se naraw kif niddeskrivu b'mod effettiv bug għall-AI, innaqqsu l-ipoteżi pass pass, u nivverifikaw permezz ta' ttestjar ta' rigressjoni li l-iffissar propost fil-fatt issolvi l-problema. Ftakar: "iffissar" bug u "trażżin is-sintomu tal-bug" huma żewġ affarijiet differenti; Il-korrezzjoni magħmula mingħajr ma tinstab il-kawża ewlenija tmexxi l-iżball għal post ieħor.

Kunċetti: Traċċa tal-munzell: Dump li turi liema funzjonijiet ġew imsejħa f'liema ordni fiż-żmien tal-iżball. Repro minima: L-iktar kodiċi/input sempliċi u iqsar li jqanqal l-iżball. Kawża ewlenija: Is-sors reali tal-problema, mhux is-sintomu. Ittestjar ta' rigressjoni: Ittestjar li jiżgura li l-istess żball ma jirrepetix.

Jiddeskrivi Bug lill-AI

Il-probabbiltà li l-AI ssib il-kawża ewlenija hija direttament proporzjonali għall-kwalità tal-informazzjoni li tipprovdi. Deskrizzjoni tajba tal-iżball tinkludi: dak li ppruvajt tagħmel, dak li kont qed tistenna, x'ġara, it-test eżatt tal-iżball u t-traċċa tal-munzell, il-kodiċi involut, l-ambjent (lingwa/verżjoni/OS), u l-iżgħar kampjun li pproduċa l-iżball.

  1. Iċċara s-sintomu. Fil-format "X mistenni, Y attwalizzat".
  2. Paste t-test sħiħ tal-iżball u stack traċċa. Tqassarhiex, iċċensurha, imma tkissirx l-istruttura.
  3. Agħti l-iżgħar riproduzzjoni. Input minimu u kodiċi li jqanqal l-iżball.
  4. Speċifika l-ambjent. Verżjoni tal-lingwa, verżjoni tal-librerija, ambjent runtime.

Deskrizzjoni effettiva tal-iżball fil-pront: "Qed niddibaggja bug. Informazzjoni:- X'qed nipprova nagħmel: [X]- Imġieba mistennija: [Y]- Imġieba attwali: [Z]- Messaġġ sħiħ ta 'żball u traċċa tal-munzell: [pejst]- Ambjent: [lingwa/verżjoni, librerija/verżjoni]- Kodiċi minimu involut: [kodiċi] M'għandekx tagħtini l-lista ta' verifika diretta f'ordni diretta 3. biex tivverifika għal kull wieħed."

Tidjiq tal-Fluss b'Ipotesi

Id-debugging sistematiku huwa l-arti li jiġu eliminati l-possibilitajiet wieħed wieħed. Uża l-AI biex tiġġenera ipoteżi u tfassal l-esperiment biex tittestja kull ipoteżi; Imbagħad mexxi l-esperiment u rritorna r-riżultat. Dan iċ-ċiklu huwa ħafna aktar mgħaġġel mill-vizzju li tagħmel bidliet każwali u tieqaf, imsejħa "debugging Shotgun".

Binarju tat-tfittxija (bissection) helper prompt: "Dan l-iżball ma kienx hemm ilbieraħ, huwa hemm illum. Irrid insib liema mill-aħħar 20 bidla ġabet l-iżball b'bisect. Agħtini pjan pass pass: liema punt għandi nittestja, f'liema nofs għandi mmur skont ir-riżultat. Għidli wkoll eżattament x'għandi niċċekkja f'kull pass."

Strateġija ta 'inserzjoni ta' log pront: "Ma nistax insib l-iżball għax ma nistax nara l-valuri intermedji f'din il-funzjoni. Għidli f'liema punti għandi bżonn inżid linji ta 'log li jistampaw liema varjabbli. Żid spjegazzjoni 'x'se nitgħallem minn dan il-ġurnal' għal kull log. Speċifika wkoll it-twissijiet li jipprevjenuni milli nilloggja data kunfidenzjali."

Tip: Jekk ma tistax issolvi żball, il-biċċa l-kbira tal-ħin il-problema tkun x'imkien inti assumiet ħażin. Staqsi lill-AI "x'suppożizzjoni tiegħi tista' tkun ħażina?" Li tistaqsi tkisser l-għama tiegħek. L-iżbalji l-aktar ħorox jinħbew fil-post fejn tgħid "Ninsab ċert li dan qed jaħdem sew".

Prompt Dgħajjef / Prompt Qawwija

DGĦAJF: "Il-kodiċi tiegħi jagħti żball, waħħalha: [200 linja ta' kodiċi]" (Riżultat: AI ma tafx x'iżball huwa, x'inhu mistenni; tagħti suġġerimenti ġenerali bbażati fuq suppożizzjonijiet, ħafna minnhom huma inutli.) STRONG: "Niġi NullPointerException. Mistennija: lista tal-utenti għandha tiġi rritornata. Attwali: Explodes on call to getUvironment]. Java 17. Ripetizzjoni minima: Jiġri meta l-lista tal-utenti tkun vojta, iżda mhux meta tkun mimlija 15-il linja Relatati: Spjega l-kawża ewlenija u għaliex emptylist jiġi attivat, imbagħad jissuġġerixxi soluzzjoni.

Il-pront qawwi jpoġġi l-iżball fil-kuntest: f'liema każ jiġri (lista vojta), f'liema każ ma jseħħx (lista sħiħa). Din l-indikazzjoni waħda ("jiġri meta vojta") kważi tindika direttament il-kawża ewlenija. Peress li din l-informazzjoni mhix disponibbli fil-pront dgħajjef, AI tagħmel raden blind.

Verifika tal-Waħħal

Fix-soluzzjoni hija biss soluzzjoni reali jekk tagħmel tliet affarijiet:

kontroll

Mistoqsija

Kif tivverifika

L-iżball marret?

L-istess dħul jaħdem issa?

Mexxi repro minimu mill-ġdid

Ebda żbalji ġodda?

Hija xi ħaġa oħra miksura?

Mexxi l-suite tat-test kollu

Mhux se tirrepeti?

L-istess żball se jerġa' jseħħ?

Żid test ta' rigressjoni għal dan ix-xenarju

Korrezzjonijiet magħmula mingħajr ma tinstab il-kawża ewlenija ħafna drabi jrażżnu s-sintomu. Per eżempju, il-glossing fuq żball null bi "skip jekk null" jagħmel ir-raġuni vera, "għaliex id-data ġejja null?" inviżibbli, u l-iżball jerġa’ jseħħ x’imkien ieħor.

Każijiet Mini

Każ 1 — In-nassa tat-trażżin tas-sintomi. Tim isikket żball null okkażjonali bi try-catch; L-iżball jisparixxi iżda wara ġimgħatejn id-dejta tidher nieqsa. Ir-raġuni vera hija li servizz jirritorna null fuq timeout. Meta tistaqsi lill-AI "għaliex qed issir null?", toħroġ il-kawża ewlenija; It-tiswija reali tieħu siegħa iżda hija permanenti.

Każ 2 — Qawwa minima ta' riproduzzjoni. Żviluppatur ma jistax jiffissa bug li jgħid "jiġġarraf kull darba." Inaqqas l-iżball għall-iżgħar input bis-suġġeriment tal-AI: il-problema sseħħ biss bl-ismijiet tal-fajls li fihom karattri Torok (iżball ta 'kodifikazzjoni). Meta 300 linja ta 'inċertezza jitnaqqsu għal 5 linji ta' repro definittiva, is-soluzzjoni ssir ovvja.

Każ 3 — Test ta' kontra r-rigressjoni. AI jiffissa żball fil-kalkolu tad-data. L-inġinier mhuwiex sodisfatt b'dan; iżid test ta' rigressjoni għax-xenarju żbaljat (tmiem ix-xahar, 31 ta' Jannar + xahar). Meta bidla oħra tmiss l-istess żona 4 xhur wara, it-test isir aħmar u l-bug jinqabad qabel ma jilħaq il-produzzjoni.

Żbalji komuni

  • Ifisser "mhux qed jaħdem, waħħalha". Mingħajr test ta 'żball, aspettattiva u repro, l-AI taħseb.
  • Mhux tagħti l-munzell traċċa. It-traċċa tal-munzell ħafna drabi tindika direttament il-kawża ewlenija.
  • Kompli tagħmel bidliet każwali. Esperimenti mingħajr ma tiġi stabbilita ipoteżi jaħlu l-ħin.
  • It-trażżin tas-sintomu u t-telf tal-kawża ewlenija. L-iżball jerġa' jitwieled x'imkien ieħor.
  • Mhux tiżgura l-iffissar bl-ittestjar tar-rigressjoni. L-istess żball jiġi lura skiet fil-futur.

Fil-qosor

Debugging effettiv huwa tidjiq sistematiku, mhux guessing. Li tagħti lill-AI it-test sħiħ tal-iżball, it-traċċa tal-munzell, ir-riproduzzjoni minima u l-informazzjoni dwar l-ambjent iżid b'mod esponenzjali ċ-ċansijiet li ssib il-kawża ewlenija. Uża l-AI biex tiġġenera ipoteżi u tfassal l-esperiment biex tittestja kull ipoteżi; Int tmexxi l-esperiment. Ikkunsidra tiffissa "magħmula" biss meta tara li l-bug ikun marret, l-ebda bugs ġodda huma introdotti, u huwa protett minn ittestjar ta 'rigressjoni.

Kompitu ta' applikazzjoni

Ikkunsidra żball reali jew artifiċjali. L-ewwel naqqas l-iżball għall-iżgħar riproduzzjoni (f'liema input iseħħ, li fih ma jseħħx). Billi tuża r-riċetta effettiva tal-bug fil-pront, staqsi lill-AI għal 3 ipoteżi ta' kawża ewlenija u pass ta' verifika għal kull waħda. Sib il-kawża ewlenija billi ttestja l-ipoteżi waħda waħda, waħħalha, imbagħad ikteb u agħmel test ta' rigressjoni għal dan ix-xenarju biex turi li l-bug spiċċa u t-test jipprovdi protezzjoni.

lista ta' kontroll

  • [ ] Ikjarifikajt is-sintomu bħala "mistennija vs realizzata".
  • [ ] Jien tajt it-test sħiħ tal-iżball u t-traċċa tal-munzell lill-AI.
  • [ ] Naqqas l-iżball għall-iżgħar riproduzzjoni.
  • [ ] Billi ttestja l-ipoteżi waħda waħda, sibt il-kawża ewlenija.
  • [ ] Minflok trażżan is-sintomu, irranġajt il-kawża ewlenija.
  • [ ] Żidt u għamilt test ta' rigressjoni għall-istess żball.