[Powered by Google Translate] Gdb, gnou Pwojè debogeur a, se yon zouti debogaj pwisan pou C,
ansanm ak plizyè lang lòt.
Li pèmèt ou fè pike alantou andedan C pwogram ou pandan y ap yo ap egzekite,
ak li tou ba ou opòtinite pou yo wè egzakteman kisa k ap rive
lè aksidan pwogram ou an.
Li trè debouya, dwa?
Gdb se lojisyèl gratis, epi li kouri sou anpil UNIX popilè ak
Windows ki baze sou sistèm operasyon, kidonk li a yon zouti trè pwopaje tout kote.
>> Ou ta dwe aprann renmen li.
Avantaj gdb gen yon tan pi fasil swiv desann pinèz
pase sa yo ki mélanger nan lè l sèvi avèk Estimation
ak montan enfini nan deklarasyon kopi enprime.
Gdb se yon zouti lòd-liy, ki vle di ou ka kominike avèk li nan yon tèminal
founi dokiman kòmandman via klavye a olye pou yo bouton klike ak sourit ou a.
>> Pou yo kòmanse moute gdb, ou literalman jis kalite gdb nan èd memwa a ak frape antre.
Ou pral wè kèk liy enprime soti nan ekran an
ki montre ou vèsyon an nan gdb ke w ap kouri,
enfòmasyon copyright li yo, ak nan fen a ou pral wè èd memwa nan gdb: (gdb).
Sa pèmèt ou konnen ke gdb a pare pou kòmandman.
Nan pwen sa a, se bagay ki pi enpòtan nan konnen ki jan fè kite fimen.
Erezman, sa a se trè senp.
Yo lòd, ki kite fè sa ki jis sa.
Kòm yon chemen kout, ou ka jis sèvi ak q tou.
Kòm plezi kòm Demarest moute gdb ak Lè sa a, san pèdi tan yon moun kite fimen se,
kite a kounye a pale sou lè l sèvi avèk gdb ede dbug yon pwogram.
>> Pou yo kòmanse, mwen te gen yon pwogram isit la nan factorial.c
ki vin yon int ak eseye kalkile faktoryèl li yo.
Nan ka ou pa te wè factorials anvan oswa pa sonje yo,
Faktoryèl la nan nimewo a n se egal a pwodwi a nan n - (n - 1), (n - 2), epi konsa sou -
jiskaske ou frape 1.
Se poutèt sa, faktoryèl la nan 3 se 3 * 2 * 1, oswa 6,
ak faktoryèl nan 4 se 4 * 3 * 2 * 1, oswa 24.
Faktoryèl zewo a se yon ka ki enpè, li nan 1,
ak factorials yo nan nonm antye relatif negatif yo pa defini.
Anyway, yon bagay sou pwogram faktoryèl mwen, se yon Funky.
Lè m 'kouri li, li simagri soti nimewo etranj ki pa gen anyen fè avèk factorials.
>> Se konsa,, nou kapab itilize gdb ede kalkile sa k ap pase sou.
Gdb opere sou dosye ègzèkutabl,
ki se dosye yo binè ki te pwodwi pa pwosesis la konpilasyon.
Sa se, nou pa kapab kouri gdb sou. C nou an oswa. Dosye h kòd sous tankou factorial.c.
Nou vle kouri li sou jis faktoryèl olye.
Si pwogram lan mande nenpòt agiman bay lòd-liy,
sa a se kote nou ta presize yo.
Nan ka sa a, faktoryèl pa mande pou nenpòt ki agiman bay lòd-liy,
pou nou jis tape kouri oswa r pou kout.
>> Sa a pral kòmanse kouri pwogram nan faktoryèl.
Lè pwogram lan sispann kouri, mwen pral genyen gdb mwen vit tounen.
Oke, kite la eseye menm bagay la ankò, faktoryèl sou 4.
Tout dwa, nou wè ke nou ap vin kalite a menm nan tenten isit la nan gdb.
Koulye a, ki te pwogram lan fini,
nou pa ka ale nan ak jwenn aksè nan nenpòt nan eta a li yo,
se konsa nou pral bezwen kòmanse li kouri ankò anvan nou ka wè sa k ap pase.
Sepandan, nou bezwen yon fason yo sispann li pandan y ap li a nan mitan an nan kouri li yo.
>> Pou fè sa, nou itilize sa ki rele yon breakpoint.
Breakpoints di gdb poz pwogram nan nan yon fonksyon patikilye oswa liy kòd sous
pou nou ka egzaminen eta a nan pwogram nan,
valè yo nan varyab, eta a nan memwa ak sa yo, nan pwen sa a.
Depi mwen pa vrèman konnen ki kote bagay yo ap mache sa ki mal,
>> Mwen te jis vle kòmanse debogaj dwa nan kòmansman an trè,
dwat lè prensipal la kòmanse.
Nou pral mete yon breakpoint nan kòmansman an nan prensipal lè l sèvi avèk yo lòd, ki repo.
Nou ka tou itilize b abreje repo.
Koulye a, kite la kòmanse pwogram lan kouri ankò.
Isit la nou yo se nan kòmansman an nan prensipal yo, jis tankou gdb di nou.
Liy lan nan kòd sa a, se sou yo egzekite men pa gen anyen ankò
se liy lan printf.
Nou ka di gdb al touye liy sa a nan kòd la epi ale nan liy nan pwochen
ak lòd nan pwochen oswa n.
>> Tout dwa, kounye a gdb di nou ke nou se sou liy la GetInt.
Mwen konnen ke li sanble tankou liy lan printf pa t 'kouri
depi nou pa wè "Mete yon nonb antye relatif pozitif" ekri ak lèt ​​detache soti sou ekran an,
men li t 'aktyèlman kouri.
Ki sa nou ap wè se sistèm nan fonksyone siprime anyen ekri nan ekran an
jiskaske li absoliman te, ki poukisa debogaj ak enprime
ka pafwa sanble konfyans.
Anyway, kite a ankò ale nan liy lan pwochen nan kòd la epi antre nan yon int.
Yon fwa ankò, kite nan kalite 4.
Se konsa, sa a sanble etranj. Nou se sou liy 12 dapre gdb,
men liy nan pwochen sa a, se sou yo egzekite se jis yon atèl Curly.
>> Ki jis vle di nou ap nan fen yon riban, nou fè pandan y ap riban an reyalite,
ak gdb ap di nou ke kondisyon an revokasyon, sètadi pa mwens pase zewo,
ap egzekite kap vini an.
Si sa a tout tan ap resevwa yon ti kras konfizyon,
nou ka rale moute kòd la sous nan gdb ak lis la oswa nan lòd l.
Sa a simagri soti kòd la sous
ki nan santre otou liy lan ke nou se kounye a sou.
Si nou tape lis oswa l ankò, nou pral wè nan pwochen seri nan liy enprime soti.
Nou ka fè sa jiskaske nou frape nan fen dosye a.
>> Pou jwenn tounen nan kote nou te, nou ka bay lis ak yon kantite liy,
nan ka sa a, liy 12.
Anyway, kite yo deplase sou.
Koulye a, nou ap sou riban an 4.
Se pou nou asire w ke varyab NUM nou gen 4.
Nou fè sa ak ekri ak lèt ​​detache a, oswa p, lòd.
Se konsa, gdb di nou ke NUM se annefè estoke 4, menm jan nou espere.
$ A 1 ki gdb simagri soti se yon varyab gdb espesyal
ki se kounye a mete nan magazen 4 nan nimewo kòm byen.
Ou ka inyore sa a pou kounye a, men sa yo varyab gdb vini nan super sou la men
nan ka plis avanse lè ou vle sonje sa ki ou te fè nan tan lontan an.
Anyway, deplase sou ak pwochen, nou wè ke nou kòmanse mouvman atravè la pou riban.
Ann kenbe ale atravè tout isit la ak ti jan n pa ti jan.
Olye de sezisman n tan chak, ou ka tou jis frape antre.
Lè ou frape antre nan san ou tape anyen, gdb jis repete yo lòd, ki anvan yo.
Se konsa, kounye a nou te frape apèl la printf.
Li sanble ke nou te vre ale nan nou an pou riban 4 fwa,
ki se ki sa nou vle fè yo nan lòd yo miltipliye li pa 1, 2 3,, ak 4.
>> Tout sanble tankou li nan travay,
eksepte lè nou frape pwochen ankò nou jwenn nimewo sa a yon gwo olye pou yo 24.
Si nou enprime soti valè p faktoryèl lè l sèvi avèk,
nou wè ke faktoryèl gen nimewo sa a masiv nan li.
Yon bagay nan definitivman pral mal.
Nan pwen sa a, menm si, nou se prèske nan fen pwogram lan,
ak li a twò ta ranje anyen.
>> Sepandan, nou ka rekòmanse pwogram nan lè ou tape r ankò, li Lè sa a, y konfime.
Koulye a, nou ap tounen nan breakpoint nou an nan konmansman an nan prensipal la.
Nou konnen ke tout bagay sanble ap amann ak lekti nan n nan.
pou nou ka sote devan ak n.
Altènativman, nou ka mete yon breakpoint nouvo apre fè a pandan y ap riban
ak sote la. Se pou nou fè sa.
Sanble liy 14 vini jis apre riban an.
Se pou nou mete yon breakpoint la.
Li nan bon pratik presize non an dosye ki nan lòd sa a breakpoint
depi gdb ka jwenn konfonn si w ap travay ak dosye miltip.
Pou avanse pou pi devan yo nan sa a breakpoint, nou pral sèvi ak pèsiste la oswa lòd c.
>> Oke, isit la nou nan la pou riban.
Ann al 1 plis liy nan an pou riban,
ak Lè sa a, nou pral kòmanse varyab enprime yo wè sa k ap pase sou.
Se pou nou asire w ke mwen se vre 1, kòm atann.
Wi, ki nan tout bon.
Ki sa ki sou faktoryèl menm si?
Ola, ki nan pa bon menm.
Nou te gen yon gwo kantite negatif isit la.
How'd ki rive?
Byen, si nou gade tounen nan kòd la,
nou wè ke nou pa janm inisyalizèd li, se konsa nou te jis te fatra nan la.
Sa pral definitivman jete nan kalkil nou an.
>> Erezman, nou pa gen kite gdb ranje sa a.
Nou ka inisyalize li dwa isit la ak fikse li nan kòd la pita lè l sèvi avèk yo lòd, ki ekri an lèt detache.
Nou pral inisyalize li nan 1 depi factorials yo nan zewo ak 1, yo toulède yo 1,
epi si nou inisyalize li nan zewo, Lè sa a, nou ta toujou fini ak zewo kòm rezilta nou yo.
Ou ka mete nenpòt varyab fason sa a, ki se super sou la men.
Koulye a, kite a kontinye pwogram nou an.
Se pou nou asire ou ke tout bagay la nan kote li la sipoze ye.
NUM yo ta dwe 4, mwen ta dwe 1, ak faktoryèl yo ta dwe 1 tou.
Nou ka rakoursi pwosesis sa a epi enprime tout nan varyab lokal nou
ak super-itil moun nan lokalite yo info lòd,
ki simagri soti tout nan varyab nan-dimansyon nou an nan zòn nan.
Anyway, li sanble tout bagay ap bon yo ale.
>> Se pou nou fè yon lòt go-alantou nan riban an jis asire ou ke.
Okay, tout bagay sanble gwo.
Koulye a, nou ka sèvi ak yo lòd, ki kontinye ale nan fen an.
Sweet! 4 faktoryèl soti enprime 24 kòm atann.
Koulye a, nou ka ale ranje sa a nan kòd nou yo.
Olye de kite soti nan gdb, nou pral sèvi ak yon lòt tab tèminal fè sa.
Ale tounen nan tab gdb nou yo, nou koulye a bezwen compile ègzèkutabl nou an.
Youn nan bagay ki pi byen sou gdb se ke ou pa bezwen kite gdb nan kouri fè.
Se konsa, ke nou pa kenbe frape breakpoints yo fin vye granmoun,
kite a enfim yo ak a, ou dvine li, enfim lòd.
Sa a pral enfim tout breakpoints nou an.
Koulye a, nou ka rekòmanse pwogram lan ak r ak asire w ke tout bagay ap oke.
Sanble tout bagay ap bon yo ale.
Faktoryèl nan 4 simagri soti 24, jis tankou nou te panse.
Gdb se youn nan zouti yo ou te gen nan bwat zouti pou ou ki pi itil.
>> Gen yon ton pi plis bagay ou ka fè ak gdb,
lwen pi plis pase ou kapab fè avèk enprime senp.
Pwochen fwa pwogram ou a pa fè sa ou ta renmen,
eseye kouri gdb figi l sa k ap pase sou anndan an.
Avèk yon ti kras nan pratik, ou pral kapab fè egzèsis desann dwa sou ensèk ou a nan pa gen tan.
Non mwen se Nate Hardison. Sa a se CS50.