1 00:00:00,000 --> 00:00:05,640 2 00:00:05,640 --> 00:00:06,830 >> Doug Lloyd: Tout dwa gdb. 3 00:00:06,830 --> 00:00:08,480 Ki sa li egzakteman? 4 00:00:08,480 --> 00:00:11,310 Se konsa, gdb, ki vle di pou GNU debugjeur a, 5 00:00:11,310 --> 00:00:15,040 se yon zouti vrèman fantastik ke nou ka itilize yo ede nou debug pwogram nou an, 6 00:00:15,040 --> 00:00:18,210 oswa chèche konnen ki kote bagay sa yo yo ale mal nan pwogram nou yo. 7 00:00:18,210 --> 00:00:22,590 Gdb se étonant pwisan, men pwodiksyon an ak entèraksyon ak li 8 00:00:22,590 --> 00:00:23,830 kapab yon ti jan skre. 9 00:00:23,830 --> 00:00:28,210 Li nan anjeneral yon zouti liy lòd, ak li ka voye jete yon anpil nan mesaj nan ou. 10 00:00:28,210 --> 00:00:31,144 Apre sa, li kapab kalite difisil yo analizan ekzakteman ki sa k ap pase sou. 11 00:00:31,144 --> 00:00:33,560 Erezman, nou te pran etap yo ranje pwoblèm sa a pou ou 12 00:00:33,560 --> 00:00:36,281 jan ou travay nan CS50. 13 00:00:36,281 --> 00:00:39,030 Si ou pa lè l sèvi avèk grafik la ap debugjeur, ki Dann kolèg mwen 14 00:00:39,030 --> 00:00:41,570 Armandarse te di l 'byen yon ti jan sou nan yon videyo ki 15 00:00:41,570 --> 00:00:44,740 yo ta dwe sou isit la kounye a, ou ta ka bezwen 16 00:00:44,740 --> 00:00:48,270 yo sèvi ak liy lòd sa yo zouti yo travay avèk gdb. 17 00:00:48,270 --> 00:00:51,250 Si w ap travay nan CS50 nan IDE, ou pa bezwen fè sa. 18 00:00:51,250 --> 00:00:53,550 Men, si ou pa ap k ap travay nan CS50 IDE a, 19 00:00:53,550 --> 00:00:55,750 petèt lè l sèvi avèk yon vèsyon nan CS50 Aparèy, 20 00:00:55,750 --> 00:00:58,860 oswa yon lòt Linux opere sistèm ak gdb enstale sou li, 21 00:00:58,860 --> 00:01:00,980 ou ka bezwen sèvi ak sa yo liy lòd zouti. 22 00:01:00,980 --> 00:01:02,860 >> E depi ou ta ka ou dwe fè sa, li la 23 00:01:02,860 --> 00:01:06,280 itil jis konprann ki jan Gdb travay soti nan liy la lòd. 24 00:01:06,280 --> 00:01:09,650 Men, ankò, si w ap lè l sèvi avèk IDE la CS50, ou 25 00:01:09,650 --> 00:01:15,400 ka itilize debugjeur a grafik ki se bati nan IDE a. 26 00:01:15,400 --> 00:01:18,750 Se konsa, yo ka resevwa bagay sa yo ale ak Gdb, yo kòmanse nan debogaj 27 00:01:18,750 --> 00:01:21,220 pwosesis pou yon patikilye pwogram, tout sa ou bezwen fè 28 00:01:21,220 --> 00:01:23,810 se tape gdb swiv pa non an pwogram lan. 29 00:01:23,810 --> 00:01:28,620 Se konsa, pou egzanp, si pwogram ou a se hello, ou ta tape gdb hello. 30 00:01:28,620 --> 00:01:31,210 >> Lè ou fè sa, w ap ale rale moute anviwònman an gdb. 31 00:01:31,210 --> 00:01:33,800 Èd memwa ou a ap chanje, ak olye pou yo te sa li anjeneral 32 00:01:33,800 --> 00:01:35,841 se lè ou tape bagay a line-- lòd ls yo, 33 00:01:35,841 --> 00:01:38,115 cd-- tout nan òdinè ou Linux kòmande, èd memwa ou 34 00:01:38,115 --> 00:01:42,200 pral chanje a, pwobableman, yon bagay tankou parantèz gdb parantèz. 35 00:01:42,200 --> 00:01:46,630 Sa a nouvo gdb èd memwa ou, paske w ap andedan anviwònman an gdb. 36 00:01:46,630 --> 00:01:49,830 Yon fwa andedan nan anviwònman sa, gen nan pi gwo kòmandman de 37 00:01:49,830 --> 00:01:52,290 ke ou pral pwobableman itilize yo nan lòd sa a. 38 00:01:52,290 --> 00:01:55,200 >> Premye a se b, ki se kout pou repo. 39 00:01:55,200 --> 00:01:58,690 Apre yo te fin ou tape b, ou tipikman tape non an nan yon fonksyon, 40 00:01:58,690 --> 00:02:01,040 oswa si ou rive konnen alantou ki nimewo liy 41 00:02:01,040 --> 00:02:04,100 pwogram ou se kòmanse konpòte yo yon ti kras etranj, 42 00:02:04,100 --> 00:02:06,370 ou ka tape yon liy Nimewo gen kòm byen. 43 00:02:06,370 --> 00:02:09,660 Ki sa ki b, oswa repo, èske se li pèmèt pwogram ou 44 00:02:09,660 --> 00:02:13,270 nan kouri moute jouk yon pwen sèten, savwa, non an nan fonksyon an 45 00:02:13,270 --> 00:02:15,880 ke ou presize oswa liy lan Nimewo ke ou presize. 46 00:02:15,880 --> 00:02:18,590 >> Apre sa, nan pwen sa a, li pral jele ekzekisyon. 47 00:02:18,590 --> 00:02:21,670 Sa a se yon reyèlman bon bagay, paske yon fwa ekzekisyon ki te nan frizè, 48 00:02:21,670 --> 00:02:25,214 ou ka kòmanse trè dousman etap nan pwogram ou an. 49 00:02:25,214 --> 00:02:28,130 Tipikman, si ou ve yo te kouri pwogram ou yo, yo ap trè kout. 50 00:02:28,130 --> 00:02:31,250 Anjeneral, ou tape dot koupe tou sa se non an nan pwogram ou an, frape Antre, 51 00:02:31,250 --> 00:02:33,470 ak anvan ou kapab bat, ou Pwogram deja fini. 52 00:02:33,470 --> 00:02:36,620 Li pa reyèlman yon anpil tan eseye ak figi konnen sa k ap pase sa ki mal. 53 00:02:36,620 --> 00:02:40,920 Se konsa, li vrèman pou kapab ralanti bagay sa yo desann nan mete yon pwen repo ak b, 54 00:02:40,920 --> 00:02:43,040 ak Lè sa a kite a. 55 00:02:43,040 --> 00:02:46,169 >> Lè sa a, yon fwa ou te mete repo ou pwen, ou ka kouri pwogram nan. 56 00:02:46,169 --> 00:02:47,960 Men, si ou gen nenpòt agiman liy lòd, 57 00:02:47,960 --> 00:02:51,610 ou presize yo isit la, pa lè ou tape gdb Non pwogram ou an. 58 00:02:51,610 --> 00:02:55,980 Ou presize tout liy la bay lòd agiman lè yo pran r, oswa kouri, 59 00:02:55,980 --> 00:03:00,270 ak Lè sa a liy tou sa lòd agiman ou bezwen andedan nan pwogram ou an. 60 00:03:00,270 --> 00:03:03,510 Genyen yon kantite nan lòt reyèlman enpòtan ak itil kòmandman 61 00:03:03,510 --> 00:03:04,970 andedan nan anviwònman an GDP. 62 00:03:04,970 --> 00:03:07,540 Se konsa, kite m 'jis byen vit ale sou kèk nan yo. 63 00:03:07,540 --> 00:03:11,320 >> Premye a se n, ki se kout pou vini an, epi ou ka tape pwochen olye pou yo n, 64 00:03:11,320 --> 00:03:12,304 tou de ta travay. 65 00:03:12,304 --> 00:03:13,470 Apre sa, li nan jis steno nan. 66 00:03:13,470 --> 00:03:17,540 Ak jan ou te pwobableman deja vinn itilize yo, ke yo te kapab tape bagay 67 00:03:17,540 --> 00:03:20,520 pi kout se jeneralman pi byen. 68 00:03:20,520 --> 00:03:24,100 Ak sa ki li pral fè se li pral etap pou pi devan yon blòk nan kòd. 69 00:03:24,100 --> 00:03:26,170 Se konsa, li pral avanse pou pi devan jiskaske yon apèl fonksyon. 70 00:03:26,170 --> 00:03:28,350 Lè sa a, olye pou yo plonje nan ki fonksyon 71 00:03:28,350 --> 00:03:33,130 ak ale atravè tout nan tout sa fonksyon Kòd, li pral jis gen fonksyon an. 72 00:03:33,130 --> 00:03:34,400 >> Pral fonksyon an ap rele. 73 00:03:34,400 --> 00:03:35,733 Li pral fè tou sa travay li se. 74 00:03:35,733 --> 00:03:38,870 Li pral retounen yon valè nan fonksyon an ki rele l '. 75 00:03:38,870 --> 00:03:42,490 Lè sa a, ou pral deplase sou li nan la liy pwochen nan ki fonksyon rele. 76 00:03:42,490 --> 00:03:44,555 Si ou vle nan etap andedan nan fonksyon an, 77 00:03:44,555 --> 00:03:46,430 olye pou yo jis gen li egzekite, espesyalman 78 00:03:46,430 --> 00:03:50,004 si ou panse ke pwoblèm nan ta ka bay manti andedan nan ki fonksyon, 79 00:03:50,004 --> 00:03:52,670 , ou te kapab, nan kou, mete yon ti repo pwen andedan nan ki fonksyon. 80 00:03:52,670 --> 00:03:57,820 Oswa si w ap deja kouri, ou kapab itilize nan nan etap pou pi devan yon sèl liy nan kòd. 81 00:03:57,820 --> 00:04:01,170 >> Se konsa, sa a pral etap nan ak plonje nan fonksyon, 82 00:04:01,170 --> 00:04:04,750 olye pou yo jis gen egzekite nan ak kontinye sou nan fonksyon an 83 00:04:04,750 --> 00:04:07,380 ke w ap nan pou debogaj. 84 00:04:07,380 --> 00:04:09,870 Si ou janm vle konnen valè a nan yon varyab, 85 00:04:09,870 --> 00:04:12,507 ou ka tape p, oswa Ekri an lèt detache, ak Lè sa a non an varyab. 86 00:04:12,507 --> 00:04:15,090 Apre sa, ki pral enprime soti nou la a, andedan nan anviwònman an gdb, 87 00:04:15,090 --> 00:04:19,110 non an nan varyab la, ki you-- eskize mele l valè a nan varyab la 88 00:04:19,110 --> 00:04:20,064 ke ou te rele. 89 00:04:20,064 --> 00:04:23,230 Si ou vle konnen valè yo nan chak lokal varyab soti nan kote aksesib 90 00:04:23,230 --> 00:04:25,970 ou kounye a se nan ou pwogram, ou ka tape moun nan lokalite info. 91 00:04:25,970 --> 00:04:28,332 Li se yon anpil pi vit pase sezisman p ak Lè sa a kèlkeswa sa, 92 00:04:28,332 --> 00:04:30,540 lis soti tout nan la varyab ke ou konnen egziste. 93 00:04:30,540 --> 00:04:34,370 Ou ka tape moun nan lokalite info, epi li pral enprime soti tout bagay pou ou. 94 00:04:34,370 --> 00:04:37,770 Next moute se bt, ki se kout pou Retounen Trace. 95 00:04:37,770 --> 00:04:41,680 Koulye a, jeneralman, patikilyèman byen bonè nan CS50, 96 00:04:41,680 --> 00:04:44,450 ou pa pral reyèlman gen okazyon yo sèvi ak bt, oswa Retounen Trace, 97 00:04:44,450 --> 00:04:47,860 paske ou pa ap gen fonksyon ki rele lòt fonksyon. 98 00:04:47,860 --> 00:04:50,450 >> Ou ta ka gen prensipal rele yon fonksyon, men sa a pwobableman li. 99 00:04:50,450 --> 00:04:53,199 Ou pa gen lòt fonksyon ki rele yon lòt fonksyon, ki 100 00:04:53,199 --> 00:04:54,880 rele yon lòt fonksyon, ak sou sa. 101 00:04:54,880 --> 00:04:57,550 Men, jan pwogram ou jwenn plis konplèks, ak patikilyèman 102 00:04:57,550 --> 00:05:00,290 lè ou kòmanse travay ak rkursyon, tounen tras 103 00:05:00,290 --> 00:05:05,150 kapab yon fason reyèlman itil nan fè w kalite jwenn kèk kontèks pou kote 104 00:05:05,150 --> 00:05:06,460 Se mwen menm ki nan pwogram m 'yo. 105 00:05:06,460 --> 00:05:10,590 Se konsa, di ou te ekri kòd ou a, ak ou konnen ke prensipal rele yon fonksyon 106 00:05:10,590 --> 00:05:14,720 f, ki fè apèl yon fonksyon g, ki rele yon h fonksyon. 107 00:05:14,720 --> 00:05:17,650 Se konsa, nou gen plizyè kouch a nidifikasyon ale sou isit la. 108 00:05:17,650 --> 00:05:19,440 >> Si ou se andedan nan anviwònman gdb ou, 109 00:05:19,440 --> 00:05:21,640 epi ou konnen ou anndan a h, men ou bliye 110 00:05:21,640 --> 00:05:27,210 sou sa ki te resevwa ou nan kote ou sont- ou ka tape bt, oswa tounen tras, 111 00:05:27,210 --> 00:05:32,370 epi li pral enprime soti h, g, f prensipal yo, ansanm ak kèk lòt enfòmasyon, ki 112 00:05:32,370 --> 00:05:35,984 ba ou yon siy ke, OK prensipal rele f, f rele g, g rele h, 113 00:05:35,984 --> 00:05:37,900 e ke sa a kote mwen kounye a menm mwen nan pwogram m 'yo. 114 00:05:37,900 --> 00:05:41,380 Se konsa, li kapab reyèlman itil, espesyalman kòm skre-bay gwo biznis la nan gdb 115 00:05:41,380 --> 00:05:45,667 vin tounen yon ti kras akablan, nan chèche konnen egzakteman ki kote bagay sa yo yo. 116 00:05:45,667 --> 00:05:48,500 Finalman, lè se pwogram ou an fè, oswa lè w ap fè debogaj li 117 00:05:48,500 --> 00:05:50,125 epi ou vle nan etap lwen nan anviwònman an gdb, 118 00:05:50,125 --> 00:05:51,940 li te ede yo konnen ki jan yo jwenn soti nan li. 119 00:05:51,940 --> 00:05:55,500 Ou ka tape q, oswa Kite, yo ka resevwa soti. 120 00:05:55,500 --> 00:05:59,220 Koulye a, anvan videyo jodi a Mwen pare yon pwogram buggy 121 00:05:59,220 --> 00:06:03,900 rele buggy1, ki mwen konpile ki sòti nan yon dosye li te ye tankou buggy1.c. 122 00:06:03,900 --> 00:06:06,500 Kòm ou ta ka atann, sa a pwogram se nan buggy reyalite. 123 00:06:06,500 --> 00:06:08,990 Yon bagay ale mal lè m 'eseye ak kouri li. 124 00:06:08,990 --> 00:06:13,014 Koulye a, malerezman, mwen inadvèrtans efase dosye buggy1.c mwen, 125 00:06:13,014 --> 00:06:15,930 se konsa yo nan lòd pou mwen pou m konnen ki sa k ap pase mal ak pwogram sa a, 126 00:06:15,930 --> 00:06:18,770 Mwen pral gen yo sèvi ak Gdb kalite je fèmen, ap 127 00:06:18,770 --> 00:06:22,372 navige nan pwogram sa a nan figi konnen ekzakteman ki sa k ap pase sa ki mal. 128 00:06:22,372 --> 00:06:24,580 Men, lè l sèvi avèk jis zouti yo nou te deja te aprann enfòmasyon sou, 129 00:06:24,580 --> 00:06:27,700 nou kapab bèl anpil figi konnen egzakteman sa li ye. 130 00:06:27,700 --> 00:06:30,740 Se konsa nou tèt sou nan CS50 IDE epi yo gen yon gade. 131 00:06:30,740 --> 00:06:33,155 OK, se konsa nou ap isit la nan mwen CS50 IDE anviwònman, 132 00:06:33,155 --> 00:06:35,697 epi mwen pral rale nan yon ti jan pou ou ka wè yon ti kras plis. 133 00:06:35,697 --> 00:06:38,530 Nan fennèt tèminal m 'yo, si m' lis sa ki nan direktè mwen ye kounye a 134 00:06:38,530 --> 00:06:41,250 ak ls, nou pral wè ke mwen gen yon koup nan dosye sous 135 00:06:41,250 --> 00:06:44,982 isit la, ki gen ladan nan te diskite anvan buggy1. 136 00:06:44,982 --> 00:06:46,940 Ki sa egzakteman ale sou lè Mwen eseye epi kouri buggy1. 137 00:06:46,940 --> 00:06:47,773 Oke kite a jwenn deyò. 138 00:06:47,773 --> 00:06:52,510 Mwen tape dot koupe, buggy, e mwen frape Antre nan. 139 00:06:52,510 --> 00:06:53,670 >> Segmentation fot. 140 00:06:53,670 --> 00:06:55,000 Sa a pa bon. 141 00:06:55,000 --> 00:06:57,180 Si ou sonje, se yon segmentation fòt tipikman 142 00:06:57,180 --> 00:07:01,540 rive lè nou jwenn aksè nan memwa ke nou pa ap pèmèt yo manyen. 143 00:07:01,540 --> 00:07:03,820 Nou te yon jan kanmenm te rive nan deyò nan limit yo 144 00:07:03,820 --> 00:07:05,995 nan sa ki pwogram nan, nan du, te ban nou. 145 00:07:05,995 --> 00:07:08,310 Se konsa, deja ki nan yon siy yo kenbe nan bwat zouti a 146 00:07:08,310 --> 00:07:10,660 jan nou kòmanse pwosesis la debogaj. 147 00:07:10,660 --> 00:07:13,620 Te Yon bagay ale yon ti kras mal isit la. 148 00:07:13,620 --> 00:07:15,935 >> Tout dwa, se konsa kite a kòmanse moute anviwònman an gdb 149 00:07:15,935 --> 00:07:19,030 ak wè si nou kapab konnen ki ki sa egzakteman pwoblèm nan se. 150 00:07:19,030 --> 00:07:21,674 Mwen pral klè ekran m 'yo, ak mwen pral tape gdb 151 00:07:21,674 --> 00:07:24,340 ankò, a antre nan anviwònman an gdb, ak non an nan pwogram nan 152 00:07:24,340 --> 00:07:27,450 ke mwen vle debug, buggy1. 153 00:07:27,450 --> 00:07:30,182 Nou jwenn yon mesaj ti kras, lekti senbòl soti nan buggy1, fè. 154 00:07:30,182 --> 00:07:32,390 Tout sa ki vle di se li rale ansanm tout nan kòd la, 155 00:07:32,390 --> 00:07:35,570 e kounye a, li a te chaje nan Gdb, epi li pare ale. 156 00:07:35,570 --> 00:07:37,140 >> Koulye a, sa m 'vle fè? 157 00:07:37,140 --> 00:07:39,130 Ou sonje sa a Premye etap tipikman se 158 00:07:39,130 --> 00:07:42,540 apre mwen se andedan nan anviwonman sa a? 159 00:07:42,540 --> 00:07:44,540 Èspere ke, ou di mete yon pwen repo, paske 160 00:07:44,540 --> 00:07:46,240 an reyalite se sa ki sa m 'vle yo fè. 161 00:07:46,240 --> 00:07:47,990 Koulye a, mwen pa gen nan kòd sous pou sa a 162 00:07:47,990 --> 00:07:50,948 nan devan m ', ki se pwobableman pa ka a pou sèvi tipik, nan chemen an. 163 00:07:50,948 --> 00:07:52,055 Ou pwobableman pral. 164 00:07:52,055 --> 00:07:52,680 Se konsa, sa a, se bon. 165 00:07:52,680 --> 00:07:55,790 Men, an konsideran ou pa fè sa, sa ki nan fonksyon nan yon sèl ke ou konnen 166 00:07:55,790 --> 00:07:58,880 egziste nan chak pwogram C selibatè? 167 00:07:58,880 --> 00:08:04,420 Pa gen pwoblèm ki jan gwo oswa ki jan konplike li se, sa a fonksyon definitivman egziste. 168 00:08:04,420 --> 00:08:05,440 Main, dwa? 169 00:08:05,440 --> 00:08:08,870 >> Se konsa, li pap resevwa tout lòt bagay, nou ka mete yon pwen repo nan prensipal la. 170 00:08:08,870 --> 00:08:12,200 Epi ankò, mwen te kapab jis tape kraze prensipal yo, olye pou yo b. 171 00:08:12,200 --> 00:08:14,650 Epi si w ap kirye, si ou tout tan tout tan tape soti yon lòd lontan 172 00:08:14,650 --> 00:08:16,800 ak Lè sa a reyalize ke ou tape bagay la sa ki mal, 173 00:08:16,800 --> 00:08:18,770 , epi ou vle debarase m nan tout jan mwen jis te fè, 174 00:08:18,770 --> 00:08:22,029 ou ka pran kontwòl U, ki pral efase tout bagay ak fè ou tounen 175 00:08:22,029 --> 00:08:23,570 nan konmansman an nan liy yo kurseur. 176 00:08:23,570 --> 00:08:26,569 Yon anpil pi vit pase jis kenbe la desann efase, oswa frape l 'yon fwa pakèt moun 177 00:08:26,569 --> 00:08:27,080 sou. 178 00:08:27,080 --> 00:08:28,740 >> Se konsa, nou pral mete yon pwen repo nan prensipal la. 179 00:08:28,740 --> 00:08:32,970 Ak jan ou ka wè, li di nou te mete yon pwen repo nan dosye buggy1.c, 180 00:08:32,970 --> 00:08:36,330 ak aparamman liy lan premye nan kòd nan prensipal se liy sèt. 181 00:08:36,330 --> 00:08:38,080 Yon fwa ankò, nou pa gen dosye a sous isit la, 182 00:08:38,080 --> 00:08:40,429 men mwen pral asime ke li a di m 'sa a verite a. 183 00:08:40,429 --> 00:08:44,510 Lè sa a,, mwen jis ap epi kouri pwogram nan, r. 184 00:08:44,510 --> 00:08:45,360 Koumanse pwogram nan. 185 00:08:45,360 --> 00:08:48,160 Tout dwa, se konsa mesaj sa a se yon ti kras skre. 186 00:08:48,160 --> 00:08:50,160 Men, fondamantalman sa ki nan vini isit la se li nan jis 187 00:08:50,160 --> 00:08:53,350 di m 'mwen te frape repo m' pwen, repo Nimewo pwen 1. 188 00:08:53,350 --> 00:08:55,877 >> Lè sa a,, ki liy nan kòd, pa gen okenn dosye sa yo oswa anyè. 189 00:08:55,877 --> 00:08:57,710 Rezon ki fè la sèlman ki Mwen wè ke mesaj 190 00:08:57,710 --> 00:09:00,800 se paske mwen inadvèrtans efase dosye buggy.c mwen. 191 00:09:00,800 --> 00:09:04,050 Si dosye buggy1.c mwen te egziste nan anyè aktyèl la, 192 00:09:04,050 --> 00:09:06,920 ke dwa liy gen ta aktyèlman di m 'sa liy lan nan kòd 193 00:09:06,920 --> 00:09:08,214 literalman li. 194 00:09:08,214 --> 00:09:09,380 Malerezman, mwen efase li. 195 00:09:09,380 --> 00:09:14,790 Nou ap pral fè yo kalite navige nan sa a yon ti kras plis je fèmen. 196 00:09:14,790 --> 00:09:17,330 >> OK, se konsa kite a wè, ki sa mwen vle fè isit la? 197 00:09:17,330 --> 00:09:21,770 Bon, mwen ta renmen konnen ki sa lokal varyab petèt yo disponib nan m '. 198 00:09:21,770 --> 00:09:23,570 Mwen te kòmanse pwogram m 'yo. 199 00:09:23,570 --> 00:09:28,515 Ann wè sa ki ta ka deja inisyalizèd pou nou. 200 00:09:28,515 --> 00:09:31,430 Mwen tape Info moun nan lokalite, pa gen moun nan lokalite. 201 00:09:31,430 --> 00:09:33,960 Tout dwa, se konsa ke pa fè sa ban m 'yon tòn enfòmasyon. 202 00:09:33,960 --> 00:09:37,600 Mwen te kapab eseye ak enprime soti yon varyab, men mwen pa konnen nenpòt ki non varyab. 203 00:09:37,600 --> 00:09:39,930 Mwen te kapab eseye yon tras tounen, men mwen andedan nan prensipal yo, 204 00:09:39,930 --> 00:09:43,710 Se konsa, mwen konnen mwen pa t 'fè yon lòt apèl fonksyon kounye a. 205 00:09:43,710 --> 00:09:47,710 >> Se konsa, sanble opsyon sèlman m ', se yo sèvi ak N oswa konsa epi yo kòmanse plonje nan. 206 00:09:47,710 --> 00:09:49,630 Mwen pral sèvi ak n. 207 00:09:49,630 --> 00:09:51,180 Se konsa, mwen tape n. 208 00:09:51,180 --> 00:09:53,060 Oh mwen bondye papa, sa k ap pase isit la. 209 00:09:53,060 --> 00:09:56,260 Pwogram resevwa siyal, SIGSEGV fòt segmentation, 210 00:09:56,260 --> 00:09:57,880 ak Lè sa a yon pakèt antye nan bagay. 211 00:09:57,880 --> 00:09:58,880 Mwen se deja akable. 212 00:09:58,880 --> 00:10:00,980 Oke, gen nan aktyèlman yon anpil yo dwe aprann isit la. 213 00:10:00,980 --> 00:10:02,520 Se konsa, sa sa a fè nou konnen? 214 00:10:02,520 --> 00:10:09,180 Ki sa sa di nou se, pwogram sa a se sou yo, men pa gen anyen ankò, seg fay. 215 00:10:09,180 --> 00:10:12,550 Apre sa, an patikilye, mwen pral rale nan menm pi lwen isit la, 216 00:10:12,550 --> 00:10:18,980 li a sou yo segman fòt sou yon bagay yo rele strkan. 217 00:10:18,980 --> 00:10:22,705 >> Koulye a, nou pa gen dwa te diskite sa a fonksyon anpil. 218 00:10:22,705 --> 00:10:25,580 Men, li is-- paske nou pa ap ale pale sou chak fonksyon ki 219 00:10:25,580 --> 00:10:28,610 egziste nan estanda a C library-- men yo ap tout ki disponib nou la a, 220 00:10:28,610 --> 00:10:32,110 sitou si ou pran yon gade nan reference.cs50.net. 221 00:10:32,110 --> 00:10:35,000 Apre sa, strkan se yon vrèman pwisan fonksyon ki egziste andedan 222 00:10:35,000 --> 00:10:38,070 a header nan string.h dosye, ki se yon header 223 00:10:38,070 --> 00:10:41,970 dosye ki se dedye a fonksyon ki travay ak ak manipile strings. 224 00:10:41,970 --> 00:10:49,830 >> Apre sa, an patikilye, ki sa strkan fè se li konpare valè yo nan de strings. 225 00:10:49,830 --> 00:10:54,160 Se konsa, mwen ta pral fòt segmentation sou yon rele nan strkan li sanble. 226 00:10:54,160 --> 00:10:58,530 Mwen frape n, ak nan reyalite mwen jwenn mesaj la, pwogram sispann ak SIGSEGV siyal 227 00:10:58,530 --> 00:11:01,370 segmentation fay. Se konsa, kounye Mwen aktyèlman te seg rproche, 228 00:11:01,370 --> 00:11:06,479 ak pwogram mwen an gen bèl pi efektivman bay moute. 229 00:11:06,479 --> 00:11:07,770 Sa a se nan fen pwogram nan. 230 00:11:07,770 --> 00:11:10,370 Li kraze, li te fè aksidan. 231 00:11:10,370 --> 00:11:14,740 Se konsa, pa t 'yon anpil, men mwen aktyèlman te fè aprann byen yon ti jan 232 00:11:14,740 --> 00:11:16,747 soti nan eksperyans sa a ti kras. 233 00:11:16,747 --> 00:11:17,580 -Kisa M 'te aprann? 234 00:11:17,580 --> 00:11:22,020 Oke, pwogram mwen aksidan bèl anpil imedyatman. 235 00:11:22,020 --> 00:11:26,300 Pwogram mwen aksidan sou yon rele nan strkan, men mwen 236 00:11:26,300 --> 00:11:30,560 pa gen okenn varyab lokal yo nan mwen pwogram la nan moman ke li aksidan. 237 00:11:30,560 --> 00:11:37,320 Se konsa, sa fisèl, oswa strings, te kapab mwen posib konpare. 238 00:11:37,320 --> 00:11:42,140 Si m 'pa gen okenn lokal varyab, ou ta ka 239 00:11:42,140 --> 00:11:45,520 suppose ke mwen en-gen petèt se yon plase varyab, ki ta ka vre. 240 00:11:45,520 --> 00:11:47,670 >> Men, jeneralman, li sanble tankou mwen konpare 241 00:11:47,670 --> 00:11:52,070 nan yon bagay ki pa egziste. 242 00:11:52,070 --> 00:11:54,130 Se konsa nou mennen ankèt sou ki yon ti kras pi lwen. 243 00:11:54,130 --> 00:11:55,120 Se konsa, mwen pral klè ekran m 'yo. 244 00:11:55,120 --> 00:11:57,536 Mwen pral kite fimen soti nan la Gdb anviwònman pou yon dezyèm fwa. 245 00:11:57,536 --> 00:12:01,300 Apre sa, mwen ap panse, OK, se konsa gen nan pa gen okenn varyab lokal yo nan pwogram m 'yo. 246 00:12:01,300 --> 00:12:06,444 M ap mande si petèt m ap sipoze yo pase nan yon fisèl kòm yon agiman liy lòd. 247 00:12:06,444 --> 00:12:07,610 Se konsa, kite yo jis teste sa a soti. 248 00:12:07,610 --> 00:12:09,020 Mwen pa te fè sa a anvan. 249 00:12:09,020 --> 00:12:14,244 >> Ann wè si petèt si mwen kouri pwogram sa a ak yon agiman liy lòd li fonksyone. 250 00:12:14,244 --> 00:12:16,140 Huh, san se pa fòt segmentation la. 251 00:12:16,140 --> 00:12:17,870 Li jis di m 'ke mwen kalkile li soti. 252 00:12:17,870 --> 00:12:19,170 Se konsa, petèt sa a, se ranje a isit la. 253 00:12:19,170 --> 00:12:27,560 Ak tout bon, si mwen tounen ladan l epi gade nan kòd la sous aktyèl pou buggy1.c, 254 00:12:27,560 --> 00:12:31,180 li sanble tankou si sa m ap fè a se M 'ap fè yon rele nan strkan san yo pa 255 00:12:31,180 --> 00:12:34,010 tcheke si wi ou non an reyalite argv [1] egziste. 256 00:12:34,010 --> 00:12:36,730 Sa a se aktyèlman nan kòd sous pou buggy1.c. 257 00:12:36,730 --> 00:12:38,855 Se konsa, sa mwen reyèlman bezwen fè isit la yo ranje pwogram m 'yo, 258 00:12:38,855 --> 00:12:40,835 an konsideran Mwen gen nan ranpli nan devan m ', se 259 00:12:40,835 --> 00:12:44,740 jis ajoute yon chèk fè asire w ke arg ki egal a 2. 260 00:12:44,740 --> 00:12:47,780 Se konsa, egzanp sa a, ankò, tankou mwen te di, se yon ti jan ti kras parvenus, dwa? 261 00:12:47,780 --> 00:12:49,840 W ap jeneralman yo pa ale nan aksidantèlman efase kòd sous ou 262 00:12:49,840 --> 00:12:51,820 ak Lè sa a gen eseye ak debug pwogram nan. 263 00:12:51,820 --> 00:12:53,120 Men, èspere ke, li te bay ou yon ilistrasyon 264 00:12:53,120 --> 00:12:55,120 a kalite ki nan bagay sa yo ke ou ka panse sou 265 00:12:55,120 --> 00:12:56,610 jan ou ap debogaj pwogram ou an. 266 00:12:56,610 --> 00:12:58,760 >> Ki sa ki nan eta a nan zafè isit la? 267 00:12:58,760 --> 00:13:00,510 Ki sa ki varyab pou mwen gen aksesib a m 'konsa? 268 00:13:00,510 --> 00:13:03,600 Ki kote egzakteman se pwogram mwen ekraze, sou sa ki liy, 269 00:13:03,600 --> 00:13:05,240 sou sa ki rele nan sa fonksyon? 270 00:13:05,240 --> 00:13:06,952 Ki kalite endikasyon ki ban m '? 271 00:13:06,952 --> 00:13:08,910 Epi sa a, egzakteman nan kalite attitude ke ou 272 00:13:08,910 --> 00:13:12,820 yo ta dwe trape nan lè w ap panse sou debogaj pwogram ou yo. 273 00:13:12,820 --> 00:13:13,820 >> Mwen se Doug Lloyd. 274 00:13:13,820 --> 00:13:16,140 Sa a se CS50. 275 00:13:16,140 --> 00:15:08,642