1 00:00:07,170 --> 00:00:12,630 [Powered by Google Translate] Gdb, gnou Pwojè debogeur a, se yon zouti debogaj pwisan pou C, 2 00:00:12,630 --> 00:00:14,300 ansanm ak plizyè lang lòt. 3 00:00:14,300 --> 00:00:17,440 Li pèmèt ou fè pike alantou andedan C pwogram ou pandan y ap yo ap egzekite, 4 00:00:17,440 --> 00:00:20,880 ak li tou ba ou opòtinite pou yo wè egzakteman kisa k ap rive 5 00:00:20,880 --> 00:00:22,490 lè aksidan pwogram ou an. 6 00:00:22,490 --> 00:00:24,690 Li trè debouya, dwa? 7 00:00:24,690 --> 00:00:27,980 Gdb se lojisyèl gratis, epi li kouri sou anpil UNIX popilè ak 8 00:00:27,980 --> 00:00:31,840 Windows ki baze sou sistèm operasyon, kidonk li a yon zouti trè pwopaje tout kote. 9 00:00:31,840 --> 00:00:33,560 >> Ou ta dwe aprann renmen li. 10 00:00:33,560 --> 00:00:36,800 Avantaj gdb gen yon tan pi fasil swiv desann pinèz 11 00:00:36,800 --> 00:00:39,150 pase sa yo ki mélanger nan lè l sèvi avèk Estimation 12 00:00:39,150 --> 00:00:41,420 ak montan enfini nan deklarasyon kopi enprime. 13 00:00:41,420 --> 00:00:45,810 Gdb se yon zouti lòd-liy, ki vle di ou ka kominike avèk li nan yon tèminal 14 00:00:45,810 --> 00:00:49,720 founi dokiman kòmandman via klavye a olye pou yo bouton klike ak sourit ou a. 15 00:00:49,720 --> 00:00:54,960 >> Pou yo kòmanse moute gdb, ou literalman jis kalite gdb nan èd memwa a ak frape antre. 16 00:00:54,960 --> 00:00:58,230 Ou pral wè kèk liy enprime soti nan ekran an 17 00:00:58,230 --> 00:01:00,810 ki montre ou vèsyon an nan gdb ke w ap kouri, 18 00:01:00,810 --> 00:01:07,890 enfòmasyon copyright li yo, ak nan fen a ou pral wè èd memwa nan gdb: (gdb). 19 00:01:07,890 --> 00:01:10,770 Sa pèmèt ou konnen ke gdb a pare pou kòmandman. 20 00:01:10,770 --> 00:01:15,400 Nan pwen sa a, se bagay ki pi enpòtan nan konnen ki jan fè kite fimen. 21 00:01:15,400 --> 00:01:17,790 Erezman, sa a se trè senp. 22 00:01:17,790 --> 00:01:19,840 Yo lòd, ki kite fè sa ki jis sa. 23 00:01:19,840 --> 00:01:23,090 Kòm yon chemen kout, ou ka jis sèvi ak q tou. 24 00:01:23,090 --> 00:01:27,410 Kòm plezi kòm Demarest moute gdb ak Lè sa a, san pèdi tan yon moun kite fimen se, 25 00:01:27,410 --> 00:01:30,800 kite a kounye a pale sou lè l sèvi avèk gdb ede dbug yon pwogram. 26 00:01:30,800 --> 00:01:34,630 >> Pou yo kòmanse, mwen te gen yon pwogram isit la nan factorial.c 27 00:01:34,630 --> 00:01:37,380 ki vin yon int ak eseye kalkile faktoryèl li yo. 28 00:01:37,380 --> 00:01:41,270 Nan ka ou pa te wè factorials anvan oswa pa sonje yo, 29 00:01:41,270 --> 00:01:47,840 Faktoryèl la nan nimewo a n se egal a pwodwi a nan n - (n - 1), (n - 2), epi konsa sou - 30 00:01:47,840 --> 00:01:49,230 jiskaske ou frape 1. 31 00:01:49,230 --> 00:01:54,550 Se poutèt sa, faktoryèl la nan 3 se 3 * 2 * 1, oswa 6, 32 00:01:54,550 --> 00:02:00,180 ak faktoryèl nan 4 se 4 * 3 * 2 * 1, oswa 24. 33 00:02:00,180 --> 00:02:03,970 Faktoryèl zewo a se yon ka ki enpè, li nan 1, 34 00:02:03,970 --> 00:02:06,970 ak factorials yo nan nonm antye relatif negatif yo pa defini. 35 00:02:06,970 --> 00:02:10,280 Anyway, yon bagay sou pwogram faktoryèl mwen, se yon Funky. 36 00:02:10,280 --> 00:02:15,410 Lè m 'kouri li, li simagri soti nimewo etranj ki pa gen anyen fè avèk factorials. 37 00:02:15,410 --> 00:02:19,030 >> Se konsa,, nou kapab itilize gdb ede kalkile sa k ap pase sou. 38 00:02:19,030 --> 00:02:21,720 Gdb opere sou dosye ègzèkutabl, 39 00:02:21,720 --> 00:02:24,910 ki se dosye yo binè ki te pwodwi pa pwosesis la konpilasyon. 40 00:02:24,910 --> 00:02:30,940 Sa se, nou pa kapab kouri gdb sou. C nou an oswa. Dosye h kòd sous tankou factorial.c. 41 00:02:30,940 --> 00:02:34,650 Nou vle kouri li sou jis faktoryèl olye. 42 00:02:34,650 --> 00:02:38,340 Si pwogram lan mande nenpòt agiman bay lòd-liy, 43 00:02:38,340 --> 00:02:40,230 sa a se kote nou ta presize yo. 44 00:02:40,230 --> 00:02:44,050 Nan ka sa a, faktoryèl pa mande pou nenpòt ki agiman bay lòd-liy, 45 00:02:44,050 --> 00:02:46,410 pou nou jis tape kouri oswa r pou kout. 46 00:02:46,410 --> 00:02:50,440 >> Sa a pral kòmanse kouri pwogram nan faktoryèl. 47 00:02:50,440 --> 00:02:53,940 Lè pwogram lan sispann kouri, mwen pral genyen gdb mwen vit tounen. 48 00:02:53,940 --> 00:02:58,130 Oke, kite la eseye menm bagay la ankò, faktoryèl sou 4. 49 00:02:58,130 --> 00:03:02,910 Tout dwa, nou wè ke nou ap vin kalite a menm nan tenten isit la nan gdb. 50 00:03:02,910 --> 00:03:04,850 Koulye a, ki te pwogram lan fini, 51 00:03:04,850 --> 00:03:06,870 nou pa ka ale nan ak jwenn aksè nan nenpòt nan eta a li yo, 52 00:03:06,870 --> 00:03:09,870 se konsa nou pral bezwen kòmanse li kouri ankò anvan nou ka wè sa k ap pase. 53 00:03:09,870 --> 00:03:13,570 Sepandan, nou bezwen yon fason yo sispann li pandan y ap li a nan mitan an nan kouri li yo. 54 00:03:13,570 --> 00:03:16,970 >> Pou fè sa, nou itilize sa ki rele yon breakpoint. 55 00:03:16,970 --> 00:03:21,880 Breakpoints di gdb poz pwogram nan nan yon fonksyon patikilye oswa liy kòd sous 56 00:03:21,880 --> 00:03:24,070 pou nou ka egzaminen eta a nan pwogram nan, 57 00:03:24,070 --> 00:03:27,380 valè yo nan varyab, eta a nan memwa ak sa yo, nan pwen sa a. 58 00:03:27,380 --> 00:03:30,750 Depi mwen pa vrèman konnen ki kote bagay yo ap mache sa ki mal, 59 00:03:30,750 --> 00:03:33,510 >> Mwen te jis vle kòmanse debogaj dwa nan kòmansman an trè, 60 00:03:33,510 --> 00:03:36,510 dwat lè prensipal la kòmanse. 61 00:03:36,510 --> 00:03:39,260 Nou pral mete yon breakpoint nan kòmansman an nan prensipal lè l sèvi avèk yo lòd, ki repo. 62 00:03:39,260 --> 00:03:42,640 Nou ka tou itilize b abreje repo. 63 00:03:42,640 --> 00:03:45,000 Koulye a, kite la kòmanse pwogram lan kouri ankò. 64 00:03:45,000 --> 00:03:48,140 Isit la nou yo se nan kòmansman an nan prensipal yo, jis tankou gdb di nou. 65 00:03:48,140 --> 00:03:51,970 Liy lan nan kòd sa a, se sou yo egzekite men pa gen anyen ankò 66 00:03:51,970 --> 00:03:53,480 se liy lan printf. 67 00:03:53,480 --> 00:03:57,200 Nou ka di gdb al touye liy sa a nan kòd la epi ale nan liy nan pwochen 68 00:03:57,200 --> 00:03:59,840 ak lòd nan pwochen oswa n. 69 00:03:59,840 --> 00:04:04,120 >> Tout dwa, kounye a gdb di nou ke nou se sou liy la GetInt. 70 00:04:04,120 --> 00:04:06,630 Mwen konnen ke li sanble tankou liy lan printf pa t 'kouri 71 00:04:06,630 --> 00:04:10,070 depi nou pa wè "Mete yon nonb antye relatif pozitif" ekri ak lèt ​​detache soti sou ekran an, 72 00:04:10,070 --> 00:04:12,040 men li t 'aktyèlman kouri. 73 00:04:12,040 --> 00:04:16,029 Ki sa nou ap wè se sistèm nan fonksyone siprime anyen ekri nan ekran an 74 00:04:16,029 --> 00:04:19,649 jiskaske li absoliman te, ki poukisa debogaj ak enprime 75 00:04:19,649 --> 00:04:21,730 ka pafwa sanble konfyans. 76 00:04:21,730 --> 00:04:26,240 Anyway, kite a ankò ale nan liy lan pwochen nan kòd la epi antre nan yon int. 77 00:04:26,240 --> 00:04:30,070 Yon fwa ankò, kite nan kalite 4. 78 00:04:30,070 --> 00:04:34,540 Se konsa, sa a sanble etranj. Nou se sou liy 12 dapre gdb, 79 00:04:34,540 --> 00:04:37,660 men liy nan pwochen sa a, se sou yo egzekite se jis yon atèl Curly. 80 00:04:37,660 --> 00:04:42,110 >> Ki jis vle di nou ap nan fen yon riban, nou fè pandan y ap riban an reyalite, 81 00:04:42,110 --> 00:04:46,710 ak gdb ap di nou ke kondisyon an revokasyon, sètadi pa mwens pase zewo, 82 00:04:46,710 --> 00:04:48,010 ap egzekite kap vini an. 83 00:04:48,010 --> 00:04:50,230 Si sa a tout tan ap resevwa yon ti kras konfizyon, 84 00:04:50,230 --> 00:04:54,860 nou ka rale moute kòd la sous nan gdb ak lis la oswa nan lòd l. 85 00:04:54,860 --> 00:04:56,880 Sa a simagri soti kòd la sous 86 00:04:56,880 --> 00:04:59,010 ki nan santre otou liy lan ke nou se kounye a sou. 87 00:04:59,010 --> 00:05:03,590 Si nou tape lis oswa l ankò, nou pral wè nan pwochen seri nan liy enprime soti. 88 00:05:03,590 --> 00:05:06,070 Nou ka fè sa jiskaske nou frape nan fen dosye a. 89 00:05:06,070 --> 00:05:11,210 >> Pou jwenn tounen nan kote nou te, nou ka bay lis ak yon kantite liy, 90 00:05:11,210 --> 00:05:14,120 nan ka sa a, liy 12. 91 00:05:14,120 --> 00:05:16,040 Anyway, kite yo deplase sou. 92 00:05:16,040 --> 00:05:18,240 Koulye a, nou ap sou riban an 4. 93 00:05:18,240 --> 00:05:21,490 Se pou nou asire w ke varyab NUM nou gen 4. 94 00:05:21,490 --> 00:05:26,170 Nou fè sa ak ekri ak lèt ​​detache a, oswa p, lòd. 95 00:05:26,170 --> 00:05:31,140 Se konsa, gdb di nou ke NUM se annefè estoke 4, menm jan nou espere. 96 00:05:31,140 --> 00:05:35,180 $ A 1 ki gdb simagri soti se yon varyab gdb espesyal 97 00:05:35,180 --> 00:05:37,720 ki se kounye a mete nan magazen 4 nan nimewo kòm byen. 98 00:05:37,720 --> 00:05:42,240 Ou ka inyore sa a pou kounye a, men sa yo varyab gdb vini nan super sou la men 99 00:05:42,240 --> 00:05:46,380 nan ka plis avanse lè ou vle sonje sa ki ou te fè nan tan lontan an. 100 00:05:46,380 --> 00:05:50,970 Anyway, deplase sou ak pwochen, nou wè ke nou kòmanse mouvman atravè la pou riban. 101 00:05:50,970 --> 00:05:54,790 Ann kenbe ale atravè tout isit la ak ti jan n pa ti jan. 102 00:05:54,790 --> 00:05:58,280 Olye de sezisman n tan chak, ou ka tou jis frape antre. 103 00:05:58,280 --> 00:06:03,710 Lè ou frape antre nan san ou tape anyen, gdb jis repete yo lòd, ki anvan yo. 104 00:06:03,710 --> 00:06:05,910 Se konsa, kounye a nou te frape apèl la printf. 105 00:06:05,910 --> 00:06:09,520 Li sanble ke nou te vre ale nan nou an pou riban 4 fwa, 106 00:06:09,520 --> 00:06:13,750 ki se ki sa nou vle fè yo nan lòd yo miltipliye li pa 1, 2 3,, ak 4. 107 00:06:13,750 --> 00:06:15,870 >> Tout sanble tankou li nan travay, 108 00:06:15,870 --> 00:06:19,680 eksepte lè nou frape pwochen ankò nou jwenn nimewo sa a yon gwo olye pou yo 24. 109 00:06:19,680 --> 00:06:23,100 Si nou enprime soti valè p faktoryèl lè l sèvi avèk, 110 00:06:23,100 --> 00:06:26,120 nou wè ke faktoryèl gen nimewo sa a masiv nan li. 111 00:06:26,120 --> 00:06:28,740 Yon bagay nan definitivman pral mal. 112 00:06:28,740 --> 00:06:31,960 Nan pwen sa a, menm si, nou se prèske nan fen pwogram lan, 113 00:06:31,960 --> 00:06:34,610 ak li a twò ta ranje anyen. 114 00:06:34,610 --> 00:06:39,750 >> Sepandan, nou ka rekòmanse pwogram nan lè ou tape r ankò, li Lè sa a, y konfime. 115 00:06:39,750 --> 00:06:43,460 Koulye a, nou ap tounen nan breakpoint nou an nan konmansman an nan prensipal la. 116 00:06:43,460 --> 00:06:46,600 Nou konnen ke tout bagay sanble ap amann ak lekti nan n nan. 117 00:06:46,600 --> 00:06:48,630 pou nou ka sote devan ak n. 118 00:06:48,630 --> 00:06:52,280 Altènativman, nou ka mete yon breakpoint nouvo apre fè a pandan y ap riban 119 00:06:52,280 --> 00:06:54,910 ak sote la. Se pou nou fè sa. 120 00:06:54,910 --> 00:06:59,080 Sanble liy 14 vini jis apre riban an. 121 00:06:59,080 --> 00:07:01,070 Se pou nou mete yon breakpoint la. 122 00:07:01,070 --> 00:07:05,220 Li nan bon pratik presize non an dosye ki nan lòd sa a breakpoint 123 00:07:05,220 --> 00:07:08,480 depi gdb ka jwenn konfonn si w ap travay ak dosye miltip. 124 00:07:08,480 --> 00:07:13,230 Pou avanse pou pi devan yo nan sa a breakpoint, nou pral sèvi ak pèsiste la oswa lòd c. 125 00:07:13,230 --> 00:07:16,570 >> Oke, isit la nou nan la pou riban. 126 00:07:16,570 --> 00:07:19,060 Ann al 1 plis liy nan an pou riban, 127 00:07:19,060 --> 00:07:21,630 ak Lè sa a, nou pral kòmanse varyab enprime yo wè sa k ap pase sou. 128 00:07:21,630 --> 00:07:26,410 Se pou nou asire w ke mwen se vre 1, kòm atann. 129 00:07:26,410 --> 00:07:28,300 Wi, ki nan tout bon. 130 00:07:28,300 --> 00:07:30,270 Ki sa ki sou faktoryèl menm si? 131 00:07:30,270 --> 00:07:33,760 Ola, ki nan pa bon menm. 132 00:07:33,760 --> 00:07:35,800 Nou te gen yon gwo kantite negatif isit la. 133 00:07:35,800 --> 00:07:38,190 How'd ki rive? 134 00:07:38,190 --> 00:07:40,040 Byen, si nou gade tounen nan kòd la, 135 00:07:40,040 --> 00:07:44,800 nou wè ke nou pa janm inisyalizèd li, se konsa nou te jis te fatra nan la. 136 00:07:44,800 --> 00:07:46,820 Sa pral definitivman jete nan kalkil nou an. 137 00:07:46,820 --> 00:07:49,930 >> Erezman, nou pa gen kite gdb ranje sa a. 138 00:07:49,930 --> 00:07:54,590 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. 139 00:07:54,590 --> 00:07:59,500 Nou pral inisyalize li nan 1 depi factorials yo nan zewo ak 1, yo toulède yo 1, 140 00:07:59,500 --> 00:08:03,940 epi si nou inisyalize li nan zewo, Lè sa a, nou ta toujou fini ak zewo kòm rezilta nou yo. 141 00:08:03,940 --> 00:08:08,370 Ou ka mete nenpòt varyab fason sa a, ki se super sou la men. 142 00:08:08,370 --> 00:08:10,920 Koulye a, kite a kontinye pwogram nou an. 143 00:08:10,920 --> 00:08:14,040 Se pou nou asire ou ke tout bagay la nan kote li la sipoze ye. 144 00:08:14,040 --> 00:08:19,090 NUM yo ta dwe 4, mwen ta dwe 1, ak faktoryèl yo ta dwe 1 tou. 145 00:08:19,090 --> 00:08:23,990 Nou ka rakoursi pwosesis sa a epi enprime tout nan varyab lokal nou 146 00:08:23,990 --> 00:08:26,440 ak super-itil moun nan lokalite yo info lòd, 147 00:08:26,440 --> 00:08:29,190 ki simagri soti tout nan varyab nan-dimansyon nou an nan zòn nan. 148 00:08:29,190 --> 00:08:31,980 Anyway, li sanble tout bagay ap bon yo ale. 149 00:08:31,980 --> 00:08:34,700 >> Se pou nou fè yon lòt go-alantou nan riban an jis asire ou ke. 150 00:08:34,700 --> 00:08:38,789 Okay, tout bagay sanble gwo. 151 00:08:38,789 --> 00:08:41,659 Koulye a, nou ka sèvi ak yo lòd, ki kontinye ale nan fen an. 152 00:08:41,659 --> 00:08:46,170 Sweet! 4 faktoryèl soti enprime 24 kòm atann. 153 00:08:46,170 --> 00:08:48,690 Koulye a, nou ka ale ranje sa a nan kòd nou yo. 154 00:08:48,690 --> 00:08:53,710 Olye de kite soti nan gdb, nou pral sèvi ak yon lòt tab tèminal fè sa. 155 00:08:53,710 --> 00:08:58,080 Ale tounen nan tab gdb nou yo, nou koulye a bezwen compile ègzèkutabl nou an. 156 00:08:58,080 --> 00:09:03,180 Youn nan bagay ki pi byen sou gdb se ke ou pa bezwen kite gdb nan kouri fè. 157 00:09:03,180 --> 00:09:06,570 Se konsa, ke nou pa kenbe frape breakpoints yo fin vye granmoun, 158 00:09:06,570 --> 00:09:10,440 kite a enfim yo ak a, ou dvine li, enfim lòd. 159 00:09:10,440 --> 00:09:13,320 Sa a pral enfim tout breakpoints nou an. 160 00:09:13,320 --> 00:09:18,180 Koulye a, nou ka rekòmanse pwogram lan ak r ak asire w ke tout bagay ap oke. 161 00:09:18,180 --> 00:09:21,300 Sanble tout bagay ap bon yo ale. 162 00:09:21,300 --> 00:09:24,410 Faktoryèl nan 4 simagri soti 24, jis tankou nou te panse. 163 00:09:24,410 --> 00:09:28,830 Gdb se youn nan zouti yo ou te gen nan bwat zouti pou ou ki pi itil. 164 00:09:28,830 --> 00:09:31,970 >> Gen yon ton pi plis bagay ou ka fè ak gdb, 165 00:09:31,970 --> 00:09:34,030 lwen pi plis pase ou kapab fè avèk enprime senp. 166 00:09:34,030 --> 00:09:36,730 Pwochen fwa pwogram ou a pa fè sa ou ta renmen, 167 00:09:36,730 --> 00:09:39,740 eseye kouri gdb figi l sa k ap pase sou anndan an. 168 00:09:39,740 --> 00:09:44,380 Avèk yon ti kras nan pratik, ou pral kapab fè egzèsis desann dwa sou ensèk ou a nan pa gen tan. 169 00:09:44,380 --> 00:09:48,180 Non mwen se Nate Hardison. Sa a se CS50.