• Nie Znaleziono Wyników

Bª¡dprogramisty zny,w»argoniebardzo zstonazywanybugiem(ang.bug), jest przy zyn¡niepoprawnego, niespodziewanegodziaªania programu, wyni-kaj¡ ¡zbªdu zªowiekapowstaªegopod zastworzeniaoprogramowania.

Wspóª zesnegrykomputeroweuwa»asizabardzoskomplikowane oprog-ramowanie,zuwaginaogromn¡li zbró»ny hzagadnie«,zktórymizwi¡zany jesttakiprojekt.Dozagadnie«ty hnale»¡midzyinnymitworzeniew wydaj-nysposóbgrakitrójwymiarowej,obsªugakolizjiisymula jazyki,sztu zna inteligen ja zy te» zarz¡dzenie giganty znymi ilo± iamidany h. Tak wielka ró»norodno±¢ wymagakonie zno± izaanga»owania aªej rzeszyspe jalistów. Du»ystopie«skomplikowaniatematów,nadktórymipra uj¡programi± i, pra- apodpresj¡terminóworaznaturalnetrudno± iwkomunika jidu»y hgrup ludzi,musz¡ powodowa¢pomyªki.Bªdypopeªniaka»dy programista,nawet pra uj¡ wpojedynk,aimwikszyprojektiwi ejosóbwniego zaanga»owa-ny h, tymwikszeprawdopodobie«stwowyst¡pieniatrudny hdoznalezienia bªdówprogramisty zny h.

6.1.1 Przy zyny bªdów

Nali zbwystpuj¡ y hbªdówwprogramiewpªywmawiele zynników:

Zªo»ono±¢problemu-improgramjestbardziejrozbudowanypodwzgldem ilo± ikoduorazzawierawi ejskomplikowany halgorytmów,tym wi ej jestmiejs ,gdziemog¡wyst¡pi¢bªdy.

Umiejtno±¢ stosowania zasad jzyka programowania przez programistów -biegli wprogramowaniu, bardziej do±wiad zenii lepiej znaj¡ yprojekt programi± ipopeªniaj¡mniejbªdów.O zywi± iewdu»y hzespoªa h

mu-•

Czytelno±¢kodu-imwiksz¡dbaªo±¢przyªo»ysido zytelno± ikodu,tym mniejsze prawdopodobie«stwo wyst¡pienia bªdu. Stosowanie zytelny h identykatoróworazkomentarzyobja±niaj¡ y hdziaªanieposz zególny h partiikodu,pozwalarównie»ªatwiejznajdowa¢i usuwa¢ powstaªebªdy. Nie hlujny kod wydaje si zawikªany, o mo»e by¢przy zyn¡bªdów in-ny hprogramistów,którzymaj¡problemyzjegointerpreta j¡.

Ponownewykorzystaniekodu-kod,którybyªju»u»ywanyiprzetestowany wew ze±niejszy hprojekta h,jestpewniejszyni»nowopowstaªy.

Komunika jaistosunkimidzyprogramistami-zgranyzespóªlepiejdziaªa, ludzielepiejsikomunikuj¡,dziki zemurzadziejdo hodzido nieporozu-mie«,którebardzo zstos¡przy zyn¡bªdów.

Optymaliza je - kryty zne partie kodu wymagaj¡ zsto optymaliza ji, którezazwy zajzmniejszaj¡ zytelno±¢kodu.Problemten zstodoty zy np.wstawekasemblerowy h, zyinny hoptymaliza jiwalgorytma h, któ-remo»nabyuzna¢zanieelegan kiezpunktuwidzeniastylu programowa-nia. O zywi± ie optymaliza je takie utrudniaj¡ interpreta je kodu przez inny hprogramistów.

Grykomputerowenie s¡trywialne wproduk ji. Pra uj¡przyni h du»e zes-poªy,pisz¡ ekodzazwy zajwjzykuC++,któryjestuwa»anyzajzyk trud-ny.Dodatkowokodmusiby¢pisanytak,bypokompila jiprogramgrydziaªaª maksymalniewydajnie, oniesprzyjatworzeniuprzejrzystegoiprostegokodu. Wszystkiete zynniki powoduj¡,»egry s¡sz zególnienara»one na wystpo-waniebªdówprogramisty zny h.

6.1.2 Typy bªdów

Wprograma hmog¡wyst¡pi¢nastpuj¡ ebªdy:

Bªdyskªadniowe -nie pozwalaj¡nakompila j.Šatwedousuni ia.Nie s¡istotnymproblememwskaliprojektu.

Bªdy arytmety zne -to bªdyspowodowane dzieleniemprzez zero, prze-kro zeniemzakresówli zblubzaokr¡gleniami.Bªdytemog¡ zasemby¢ bardzotrudnedowykry ia.Samewsobieniepowoduj¡zawieszania pro-gramu,dlategoi h skutkimog¡by¢zauwa»alnezbardzodu»ym opó¹nie-niem.Bªdytakielubi¡sipropagowa¢, oozna za,»ewyst¡pieniejednego takiegobªdumo»epowodowa¢ aªyszereginny hbªdów.

Bªdy pami iowe - bªdytypu odwoªaniesi doniezaini jalizowanej pa-mi i zyte»odwoªaniesidonieprzydzielonegolubw ze±niej zwolnione-goblokupami i.S¡relatywnieªatwedowykry ia,poniewa»wskuteki h wyst¡pieniaprogramsibardzoszybkozawiesza.

wywo-maªorazy.Bªdytakies¡trudnedowykry ia.Zazwy zajpowoduj¡ wtór-nebªdy innegotypu,dzikiktórymmo»na zidentykowa¢bª¡d logi zny jakopodstawow¡przy zynpowstaniabªdówwtórny h.

Bªdyzwi¡zanezwielomaw¡tkami-tobªdytakiejakzaklesz zeniesi w¡-tków,hazarddany h,zawªasz zeniesobiezasobu przezw¡tek.Zazwy zaj prowadz¡dozawieszeniasiprogramu.Zewzgldunaniesekwen yjne wy-konywanie si z± i programu bªdy takie s¡ bardzo trudne do namie-rzenia.

6.1.3 Wyszukiwaniebªdów

Debugowaniejest to zynno±¢ polegaj¡ a na wyszukiwaniu bªdów w prog-ramie.Programdebuguje sizazwy zaj wspe jalnieskompilowanej, uru ho-mieniowejwersjiprogramu(ang.debug build),dzikiktórejmo»liwejest u»y- ie narzdzi uªatwiaj¡ y h debugowanie, które omówione zostan¡ w dalszej z± irozdziaªu.Wersjauru homieniowaró»nisiodnalnej(ang.release bu-ild) przede wszystki h tym, »e zawiera w sobiedodatkowe dane, tak zwane symboledebugowe,któres¡niezbdnedoprawidªowegodziaªaniadebuggera. Ponadtoniekorzystazazwy zaj z»adny hoptymaliza jikompila jioraz lin-kera.Zoptymalizowanykodjesttrudniejszydoanalizy(znikaj¡zkodu zsto wykorzystywane zmiennelokalne,któretraaj¡do rejestrówpro esora, zop-tymalizowane konstruk je mog¡ si zna z¡ o ró»ni¢ od oryginalny h), poza tym kompila ja orazlinkowanie z wª¡ zonymi optymaliza jamitrwa zde y-dowanie dªu»ej.W przypadku zstej rekompila ji kodupod zas testowania iuru hamiania,mogªobytoby¢bardzou i¡»liwe.Wersjanalnajest zoptyma-lizowanaorazwolnaodjaki hkolwieknadmiarowy hdany h, zegoskutkiem jest mniejszy rozmiar plików wykonywalny h i bibliotek orazzde ydowanie szybsze dziaªanie(w spe y zny h przypadka h przyspieszeniebdzie kilku-nastokrotne!)-niestety,jestbardzotrudna doanalizy.

Czasamianalizawersjiuru homieniowejjestwdalszym i¡guzbyt skom-plikowana.W taki hprzypadka hdopro esudebugowaniamo»e by¢ wyma-ganaspe jalnawersjaprogramu,którajestbardzomo nookrojonawzgldem oryginaªu.Pozwalatowyeliminowa¢nadmiarowedane,któremog¡utrudnia¢ wyszukaniekonkretny h bªdów. Wersjata mo»e by¢równie»tak skonstru-owana,abydanybª¡dwystpowaªnaj z± iejjaktojestmo»liwe.

Debugowanie kryty zny h bªdów zazwy zaj jest bardzo trudnym i pra- o hªonnympro esem,dlategobardzowa»najestprolaktyka przeprowadza-na midzy innymi za pomo ¡ narzdzi diagnosty zny h. Program powinien by¢uru hamianyitestowanyodnajw ze±niejszejfazy, ouniemo»liwi nagro-madzeniasi du»ej li zbybªdów.W prze iwnym przypadku mo»e doj±¢do sytua ji, w której nikt nie ma kontrolinad programem, w którym jest tyle bªdów, »e trudno jest za z¡¢ sensowne testy. W trak ie testowania ka»de nieprzewidzianedziaªanie programupowinnoby¢sygnaªemalarmowymoraz

najbardziej efektywny, warto zaopatrzy¢ si w szereg narzdzi diagnosty z-ny h.Jako±¢orazli zbataki hnarzdzizna z¡ omo»ewpªywa¢na zas dia-gnostykiprogramu.

Powiązane dokumenty