[Powered by Google Translate] GDB, GNU Project Debugger, er öflugt kembiforrit tól fyrir C,
ásamt mörgum öðrum tungumálum.
Það gerir þér kleift að pota í kring inni C forrit á meðan þeir eru að keyra,
og það gefur þér einnig tækifæri til að sjá nákvæmlega hvað gerist
þegar program hrun.
Það er nokkuð sniðugt, ekki satt?
GDB er frjáls hugbúnaður, og það keyrir á mörgum vinsælum UNIX og
Windows-undirstaða stýrikerfi, þannig að það er mjög útbreidd tól.
>> Þú ættir að læra að elska það.
GDB kostir hafa miklu auðveldara tíma mælingar niður bugs
en þeir sem muddle gegnum með gátur
og óendanlega magn af yfirlýsingum útprentun.
GDB er stjórn-lína tól, sem þýðir að þú getur samskipti við það í flugstöðinni
útgáfu skipanir í gegnum lyklaborðið í stað þess að smella hnappar með músinni.
>> Til að byrja upp GDB, bókstaflega þú réttlátur tegund gdb á skjóta og högg koma inn í.
Þú munt sjá nokkrar línur prenta út á skjáinn
sýna þér útgáfu af GDB sem þú ert að keyra,
upplýsingar um höfundarrétt þess, og í lok þú munt sjá gdb skipanir: (gdb).
Þetta gerir þér kleift að vita að GDB er tilbúinn fyrir skipanir.
Á þessum tímapunkti, er það mikilvægasta til að vita hvernig á að gera hætta.
Sem betur fer, þetta er frekar einfalt.
Hættir að reykja stjórn er bara þessi.
Eins og a smákaka, getur þú bara að nota Q líka.
Eins gaman og stígvél upp gdb og þá tafarlaust hætta er
við skulum nú tala um að nota gdb til að kemba forrit.
>> Til að byrja, hef ég fengið forrit hér í factorial.c
sem fær int og reynir að reikna þáttatilraun þess.
Ef þú hefur ekki séð factorials áður eða man ekki þá,
Aðfeldi fjölda n er jöfn margfeldi n - (n - 1), (n - 2), og svo framvegis -
þar til þú högg 1.
Því aðfeldi 3 er 3 * 2 * 1, eða 6,
og aðfeldi 4 er 4 * 3 * 2 * 1, eða 24.
Aðfeldi núll er skrýtið mál, það er 1,
og factorials um neikvæðar heiltölur eru ekki skilgreind.
Engu að síður, eitthvað um þáttarannsókn program minn er angurvær.
Þegar ég hlaupa það, prenta það út undarlegt númer sem hafa ekkert að gera með factorials.
>> Svo getum við notað gdb til að reikna út hvað er að gerast.
GDB starfar á executable skrá,
sem eru tvöfaldur skrár framleitt af samantekt aðferð.
Það er, við getum ekki keyrt gdb á. C okkar eða. Klst kóðann skrá eins factorial.c.
Við viljum til að keyra það á bara þáttatilraun staðinn.
Ef forritið þurfa allir stjórn-lína rök,
þetta er þar sem við myndum skilgreina þá.
Í þessu tilfelli, þáttatilraun hjartarskinn ekki þurfa allir stjórn-lína rök,
svo við réttlátur tegund hlaupa eða r fyrir stuttu.
>> Þetta mun byrja aðfeldi forrit í gangi.
Þegar forritið hættir í gangi, ég fá GDB mín hvetja til baka.
Jæja, við skulum reyna það sama aftur, aðfeldi 4.
Allt í lagi, við sjáum að við erum að fá sams konar rusli hér í gdb.
Nú þegar forritið hefur lokið,
við getum ekki farið í og ​​aðgang að einhverju af stöðu,
þannig að við þurfum að byrja það í gangi á ný áður en við getum séð hvað er að gerast.
Hins vegar þurfum við leið til að stöðva það á meðan það er í the miðja af hlaupa.
>> Til að gera það, notum við það sem er kallað breakpoint.
Breakpoints segja gdb til að gera hlé á dagskrá í ákveðna aðgerð eða fengið kóða línu
svo að við getum athuga ástand af the program,
gildi af breytum, stöðu minni og svo á þeim tímapunkti.
Þar sem ég í raun ekki vita hvar hlutirnir eru að fara úrskeiðis,
>> Ég vil bara byrja kembiforrit rétt í upphafi,
rétt þegar helstu hefst.
Við munum setja breakpoint í upphafi helstu með brot stjórn.
Við getum líka notað b að skammstafa brot.
Nú skulum byrja forritið að keyra aftur.
Hér erum við í upphafi helstu, eins og GDB segir okkur.
Línan af kóða sem er að fara að framkvæma en hefur ekki enn
er printf línu.
Við getum sagt gdb til að framkvæma þessa línu af kóða og fara í næstu línu
með næstu eða N stjórn.
>> Allt í lagi, nú segir GDB okkur að við erum á GetInt línu.
Ég veit að það virðist eins og printf línan ekki keyrt
þar sem við sjáum ekki "Sláðu inn jákvæð heiltala" prenta út á skjánum,
en það var í raun að keyra.
Það sem við erum að sjá er stýrikerfi bæla skrifa eitthvað á skjáinn
þar til það hefur algerlega til, sem hverju kembiforrit og prenta
getur stundum virðist óáreiðanlegar.
Engu að síður, við skulum aftur fara í næstu línu af kóða og inn í int.
Aftur, við skulum gerð 4.
Svo lítur þetta undarlegt. Við erum á línu 12 samkvæmt gdb,
en næsta lína sem er að fara að framkvæma er bara hrokkið Brace.
>> Það þýðir bara að við erum í lok lykkju, gerum okkar meðan lykkja í raun,
og GDB er að segja okkur að uppsögn ástand, þ.e. ekkert minna en núll,
mun framkvæma næst.
Ef þetta alltaf fær svolítið truflandi,
við getum draga upp kóðann í GDB með lista eða L stjórn.
Þessi prentar út kóðann
sem er með miðju í kringum línu sem við erum nú á.
Ef við gerð lista eða L aftur, munum við sjá næsta sett af línum prenta út.
Við getum gert þetta þangað til við högg the endir af the skrá.
>> Til að komast aftur þar sem við vorum, getum við framboð lista með línu númer,
í þessu tilfelli, lína 12.
Engu að síður, við skulum halda af stað.
Nú erum við á 4 hliðar.
Við skulum tryggja að NUM breyta okkar inniheldur 4.
Við gerum þetta með prenti, eða P, stjórn.
Svo, GDB segir okkur að NUM er örugglega að geyma 4, eins og við gerðum ráð fyrir.
The $ 1 sem GDB prentar er út sérstakt GDB breytu
sem er nú stillt til að geyma númer 4 eins og heilbrigður.
Þú getur hunsa þetta fyrir nú, en þessi gdb breytur koma super vel
í fleiri háþróaður tilvikum þegar þú vilt að muna það sem þú hefur gert í fortíðinni.
Engu að síður, færa á og næst, sjáum við að við byrjum að fara í gegnum til hliðar.
Við skulum halda áfram með hér með n smátt og smátt.
Frekar en að slá n hvert sinn, getur þú líka bara högg koma inn í.
Þegar þú högg inn án þess að skrifa neitt, GDB endurtekur bara fyrri skipunina.
Svo nú höfum við högg the printf hringja.
Það lítur út eins og við höfum reyndar farið í gegnum okkar fyrir lykkju 4 sinnum,
sem er það sem við viljum gera til að margfalda með 1, 2, 3 og 4.
>> Allt virðist eins og það er að vinna,
nema þegar við högg næst aftur fáum við þessa mikla fjölda í stað 24.
Ef við prenta út verðmæti þáttarannsókn með p,
sjáum við að þáttatilraun hjartarskinn hafa þetta miklum fjölda í það.
Eitthvað er ákveðið að fara úrskeiðis.
Á þessum tímapunkti, þó, við erum nánast í lok áætlunarinnar,
og það er of seint að laga neitt.
>> Hins vegar getum við endurræsa kerfið með því að slá r aftur og Y til að staðfesta.
Nú erum við aftur á breakpoint okkar í byrjun Main.
Við vitum að allt virðist vera í lagi með að lesa í n.
svo við getum hoppað á undan með n.
Einnig getum við sett nýja breakpoint eftir að gera á meðan lykkja
og stökk þar. Við skulum gera það.
Útlit eins og lína 14 kemur bara eftir lykkju.
Við skulum setja breakpoint þar.
Það er gott að tilgreina skrá nafn í þessari breakpoint stjórn
þar GDB hægt að fá rugla ef þú ert að vinna með margar skrár.
Til að færa undan þessu breakpoint, munum við nota halda áfram eða c stjórn.
>> Jæja, hér við erum í for lykkju.
Við skulum fara 1 fleiri línu inn í for lykkju,
og þá munum við hefja prentun breytur til að sjá hvað er að gerast.
Við skulum vera viss um að ég sé örugglega 1, eins og búist var við.
Jamm, það er allt gott.
Hvað þáttatilraun þó?
Vá, það er ekki gott.
Við höfum fengið mikil neikvæð tala hér.
Hvernig gekk að gerast?
Jæja, ef við lítum aftur á númerið,
sjáum við að við aldrei frumstilla hana, þannig að við höfum bara rusl þar.
Það mun örugglega skekkt útreikninga okkar.
>> Sem betur fer höfum við ekki að fara gdb til að laga þetta.
Við getum frumstilla hana hérna og festa það í númerið síðar með prenta stjórn.
Við munum frumstilla hana 1 þar sem factorials af núll og 1 eru bæði 1,
og ef við frumstilla hana á núll, þá við myndum alltaf enda með núll eins vegna okkar.
Þú getur stillt hvaða breytu þessum hætti, sem er frábær vel.
Nú, við skulum halda áfram áætlun okkar.
Við skulum vera viss um allt er þar sem það er ætlast til að vera.
Num ætti að vera 4, ætti ég að vera 1, og þáttatilraun vera 1 líka.
Við getum flýtileið þetta ferli og prenta allar staðbundnar breytur okkar
með frábær-gagnlegt stjórn upplýsa heimamenn,
sem prentar út allar í umfang okkar heimamaður breytur.
Engu að síður lítur það eins og allt er gott að fara.
>> Við skulum gera annað fara-í kring um lykkju bara til að vera viss.
Jæja, allt lítur vel út.
Nú getum við notað að halda áfram stjórn til að fara til enda.
Sweet! 4 þáttatilraun prenta út 24 eins og búast mætti ​​við.
Nú getum við farið festa þetta í númerið okkar.
Frekar en að hætta út af GDB, munum við nota annað flugstöðinni flipann til að gera þetta.
Fara aftur til gdb flipanum okkar, þurfum við nú að laun executable okkar.
Einn af the bestur hlutur óður gdb er að þú þarft ekki að fara gdb til að keyra að.
Svo að við gerum ekki viðurværi hitting gamla Rofstaðir,
við skulum gera þá með, þú giska á það, gera stjórn.
Þetta mun gera allt breakpoints okkar.
Nú getum við endurræsa kerfið með R og ganga úr skugga um allt sé í lagi.
Útlit eins og allt er gott að fara.
Aðfeldi 4 prentar út 24, alveg eins og við héldum.
GDB er einn af the hjálpsamur tól sem þú hefur fengið í verkfærakista þinn.
>> Það eru tonn fleiri hlutir sem þú getur gert með gdb,
miklu meira en hægt er að gera með einföldum prenta.
Næst þegar kerfið er ekki að gera það sem þú vilt,
reyna að keyra gdb til að reikna út hvað er að gerast inni.
Með smá æfingu verður þú að vera fær um að bora niður rétt á galla í neitun tími.
Ég heiti Nate Hardison. Þetta er CS50.