Bugs:An application crashed
Úr Wikipedia, frjálsu alfræðiorðabókinni
Efnisyfirlit |
Kynning
Þú ert að vinna á tölvunni, og skyndilega gerist það versta sem til er--forritið krashar. Ein þægindin við hugbúnað sem byggður er á opinni keldu er hið opna samfélag með forriturum sem hlusta á notendur sína og reyna að laga galla eins fljótt og hægt er. Svo þú, venjulegur notandi, getur orðið liður í þessu samfélagi með því að tilkynna um galla og prófa hið lagfærða forrit.
Enn að gefa skýrslu um galla er ekki það sama og að segja "þetta virkar ekki." Einn liður sem á stórann þátt í að það geta verið bið á lagfæringu galla, er hvernig skýrslan um gallann er gefinn. Svo þessi leiðbeining ætti aðstoða við að bæta samskipti milli þróunaraðila og notenda þegar um er að ræða lagfæringu galla.
Gæði góðrar Galla Skýrslu
Svo vinsamlega munið eftir tveim þáttum góðrar galla skýrslu:
- Endurskapanlegt: Reynið að endurskapa gallann á eigin vinnustöð. Skrifið niður hvert stef sem þér takið í að endurskapa gallann. Stundum hjálpar að taka bakgrunns forrit úr sambandi til að forðast samskipti milli forrita sem krasha og annars hugbúnar sem keyrir í bakgrunni. Ef hugbúnaðurinn sem krashar á samskipti við annann þráð, þarf einnig að skýra frá þessu í skýrslunni. Öll smáatriði sem hægt er að fá fram hjálpar verkfræðingum að endurskapa gallan á eigin vinnustöð.
- Nákvæmt: Skýrið ekki frá fleiri en einum galla í hverri lýsingu. Gefið eins nákvæmar upplýsingar eins og þið eruð fær um. Ræðið ekki um aðra þætti sem gæti neytt forritara eða prófunarfólk til að þýða þetta áður en þeir skylja hverju er verið að lýsa.
Sýnidæmi: Segjum að gallaði hugbúnaðurinn sé Vafrinn. Hann krashar í hvert sinn sem þú ferð á foo.bar og þú villt skrifa skýrslu um þennan galla:
SLÆMT: "Vafrinn krashaði. Ég held ég hafi verið á www.foo.bar. Ég spila golf með Bill Gates, svo það er betra fyrir þig að laga þennann galla, annars segi ég honum frá þessu. Svo er Tilbaka táknið algert ógeð og líkist klesstri mús. LJÓTT. Takk fyrir aðstoðina."
GOTT: "Hugbúnaðurinn krashaði í hvert sinn sem ég fór á
www.foo.bar, með 01/04'06 útgáfunni á openSUSE kerfinu. Það
krashaði aftur í hvert sinn sem reynt var að teikna Foo
yfirskriftina á síðunni. Ég braut niður síðuna, og komst að
því að eftirfarandi hlekkur í mynd mun alltaf krasha forritinu,
nema þetta sé fjarlægt
"BORDER=0" attribute:
<IMG SRC="
" WIDTH="400" HEIGHT="44" BORDER="0" ALT="Our Banner">
Grannskoða Vandamálið
Umhverfið
Athugið umhverfið fyrst. Skrifið niður kerfis útgáfu, forrits útgáfu, íforrit (ásamt útgáfum þeirra), og svo framvegis. Reynið síðan að endurskapa vandamálið og skrifa niður hvert skref sem þið tókuð til að fá forritið til að krasha. Athugið hvor nýrri útgáfa af forritinu leysi vandamálið: Lítið á heimasíðu verkefnisins til að fá ýtarlegri upplýsingar.
Setja inn -debuginfo Pakka
Flest forrit með grafísku notendaviðmóti sýna rekil þegar þau krasha. Rekillinn segir forriturum nákvæmar hvar villann átti sér stað. Vanalega er notast við gdb til að skapa þennan rekil. Hinsvegar, getur gdb skapað mun nákvæmari rekil þegar það er með debug upplýsingar. Vinsamlega setjið inn -debuginfo pakka forritsins til að auka gæði úttaks frá gdb. Þessir pakkar eru ekki hlut af CD settinu, en þú finnur þá á netútgáfu kerfisins, í "inst-source" efnisyfirlitinu á FTP þjóni okkar eða einhverjum speglanna. Þetta efnisyfirlit má nota sem insettningar grunn í YaST (í staðinn fyrir CD).
Vinsamlega setjið inn pakkana og reynið að endurskapa vandamálið. Látið í té lýsingu á því hvernig farið var að því að skapa vandann ásamt rekil sögu forritsins. Þessir pakkar aðstoða einnig við aflúsun, þegar notast er við gdb beint, sjáið að neðan.
Aflúsun
Það er engin uppfærsla og þú getur endurskapað vandann auðveldlega. Nú er kominn tími til að aflúsa forritið. Aflúsun getur tekið langan tíma--en er stundum eina leiðin til að fá góða villuskýrslu og til að aðstoða forritara við að leysa gallan fljótt.
Það eru fleiri leiðir til að aflúsa forrit, svo þú þarft að athuga hverja einstaka tillögu fyrir sig og velja rétt form fyrir þitt forrit.
strace
Forrit nota oft skrár til að sækja stillingar, fá aðgang að stýribúnaði, og skrá niður. Stundum, reynir forrit að ná í slík gögn á rangan hátt. strace er nýtilegt tól og gæti aðstoðað við að finna út úr þessu. strace rekur kerfis köll (þaðan kemur nafnið), sem felur í sér köll sem nota minni og skrár.
Í einföldustu tilvikum, keyrir strace ákveðna skipun þangað til að hún hættir. Það rekur og skráir kerfis köll sem eru notuð af forriti and merki sem tekið er við af forriti. Nafn hvers kerfiskalls, ásamt breitum, og skilagildi eru skrifuð út á staðlað villu úttak eða í srká sem gefin er upp með -o stillingunni.
Dæmi um að keyra strace á skipunina cat /dev/null er:
strace -o strace.log cat /dev/null
Þetta býr til skrá sem kallast strace.log í núverandi efnisyfirliti. Við athugum skrána, en tengdar upplýsingar í þessu samhengi eru hér að neðan:
open("/dev/null", O_RDONLY) = 3
Villur (vanaleg skilagildi eru -1) hefur errno einkenni og viðtengdann villustreng.
open("/foo/bar", O_RDONLY) = -1 ENOENT (No such file or directory)
Svo strace virðist vera besta leiðin til að aflúsa forrit sem krasha þegar þau starta eða þegar þaug opna eða forða í skrár.
Notast við GDB
GDB, eða GNU Debugger, er forrit sem notað er til að finna keyrsluvillur sem vanalega fela í sér ranga minnisnotkun.
dmesg
dmesg skrifar út eða stýrir hringaminni kjarnans. Svo, ef þú hefur eitthvert vandamál með sjálfan kjarnar eða forrit sem tengist kjarnanum (sérstaklega kjarna modúl eða hotplug hluti), þá ættir þú að nota þetta tól.

