1 00:00:00,000 --> 00:00:05,640 2 00:00:05,640 --> 00:00:06,830 >> DOUG LLOYD: Allt í lagi GDB. 3 00:00:06,830 --> 00:00:08,480 Hvað er það nákvæmlega? 4 00:00:08,480 --> 00:00:11,310 Svo GDB, sem stendur fyrir GNU Debugger, 5 00:00:11,310 --> 00:00:15,040 er mjög ógnvekjandi tól sem við getum notað til að hjálpa okkur að kemba forrit okkar, 6 00:00:15,040 --> 00:00:18,210 eða finna út hvar hlutirnir eru að fara úrskeiðis í áætlunum okkar. 7 00:00:18,210 --> 00:00:22,590 GDB er ótrúlega öflugur, en framleiðsla og samspil við það 8 00:00:22,590 --> 00:00:23,830 getur verið svolítið dulinn. 9 00:00:23,830 --> 00:00:28,210 Það er yfirleitt a stjórn lína tól, og það getur kastað mikið af skilaboðum á þig. 10 00:00:28,210 --> 00:00:31,144 Og það getur eins konar erfitt að flokka nákvæmlega hvað er að gerast. 11 00:00:31,144 --> 00:00:33,560 Sem betur fer, höfum við gert ráðstafanir að laga þetta vandamál fyrir þig 12 00:00:33,560 --> 00:00:36,281 eins og þú vinna í gegnum CS50. 13 00:00:36,281 --> 00:00:39,030 Ef þú ert ekki að nota grafísku aflúsara, sem samstarfsmaður Dan minn 14 00:00:39,030 --> 00:00:41,570 Armandarse hefur talað alveg svolítið um í myndbandi sem 15 00:00:41,570 --> 00:00:44,740 ætti að vera hérna núna, þú gætir þurft 16 00:00:44,740 --> 00:00:48,270 að nota þessa stjórn lína verkfæri til að vinna með gdb. 17 00:00:48,270 --> 00:00:51,250 Ef þú ert að vinna í CS50 IDE, þú þarft ekki að gera þetta. 18 00:00:51,250 --> 00:00:53,550 En ef þú ert ekki vinna í CS50 IDE, 19 00:00:53,550 --> 00:00:55,750 kannski nota útgáfu CS50 Appliance, 20 00:00:55,750 --> 00:00:58,860 eða annar Linux stýrikerfi kerfi með gdb upp á það, 21 00:00:58,860 --> 00:01:00,980 þú gætir þurft að nota þessi stjórn lína tól. 22 00:01:00,980 --> 00:01:02,860 >> Og þar sem þú gætir að gera það, það er 23 00:01:02,860 --> 00:01:06,280 gagnlegt bara að skilja hvernig GDB verksmiðja frá the stjórn lína. 24 00:01:06,280 --> 00:01:09,650 En aftur, ef þú ert nota CS50 IDE, þú 25 00:01:09,650 --> 00:01:15,400 Hægt er að nota grafísku aflúsara sem er byggt inn í IDE. 26 00:01:15,400 --> 00:01:18,750 Svo til að fá það að fara með GDB, til að hefja kembiforrit 27 00:01:18,750 --> 00:01:21,220 Ferlið tiltekin program, það eina sem þú þarft að gera 28 00:01:21,220 --> 00:01:23,810 er að slá GDB fylgt af áætluninni nafni. 29 00:01:23,810 --> 00:01:28,620 Svo til dæmis, ef forritið þitt er halló, myndir þú slærð gdb halló. 30 00:01:28,620 --> 00:01:31,210 >> Þegar þú gerir það, þú ert að fara að draga upp gdb umhverfi. 31 00:01:31,210 --> 00:01:33,800 Hvetja mun breytast, og í stað þess að vera það sem það venjulega 32 00:01:33,800 --> 00:01:35,841 er þegar þú slærð það Í stjórn line-- LS, 33 00:01:35,841 --> 00:01:38,115 cd-- öll dæmigerð Linux skipanir, hvetja þig 34 00:01:38,115 --> 00:01:42,200 mun breytast til, líklega eitthvað eins sviga GDB sviga. 35 00:01:42,200 --> 00:01:46,630 Það er nýtt GDB hvetja þinn, því þú ert inni í GDB umhverfi. 36 00:01:46,630 --> 00:01:49,830 Einu sinni inni í því umhverfi, það er tveir helstu skipanir 37 00:01:49,830 --> 00:01:52,290 að þú munt sennilega nota í eftirfarandi röð. 38 00:01:52,290 --> 00:01:55,200 >> Í fyrsta lagi er b, sem er stutt fyrir brot. 39 00:01:55,200 --> 00:01:58,690 Og eftir að þú slærð b, þú oftast Sláðu inn nafn fall, 40 00:01:58,690 --> 00:02:01,040 eða ef þú skyldir vita um hvaða línu númer 41 00:02:01,040 --> 00:02:04,100 program er farin að haga sér svolítið skrítið, 42 00:02:04,100 --> 00:02:06,370 þú getur slegið línu Fjöldi þar sem vel. 43 00:02:06,370 --> 00:02:09,660 Hvað b, eða brot, er er það gerir program 44 00:02:09,660 --> 00:02:13,270 að hlaupa upp til að ákveðnum stað, nefnilega, nafn fallsins 45 00:02:13,270 --> 00:02:15,880 sem þú tilgreinir eða lína tala sem þú tilgreinir. 46 00:02:15,880 --> 00:02:18,590 >> Og á þeim tímapunkti, það vilja frysta framkvæmd. 47 00:02:18,590 --> 00:02:21,670 Þetta er mjög gott, því þegar framkvæmd hefur verið fryst, 48 00:02:21,670 --> 00:02:25,214 þú getur byrjað að mjög hægt skref í gegnum program. 49 00:02:25,214 --> 00:02:28,130 Venjulega, ef þú hefur verið að keyra áætlanir þínar, þá eru þeir mjög stutt. 50 00:02:28,130 --> 00:02:31,250 Venjulega, þú skrifar punktur rista hvað nafn program er, ýta á Enter, 51 00:02:31,250 --> 00:02:33,470 og áður en þú getur blikka, þinn Námið er þegar lokið. 52 00:02:33,470 --> 00:02:36,620 Það er ekki raunverulega a einhver fjöldi af tími til að reyna og reikna út hvað er að fara úrskeiðis. 53 00:02:36,620 --> 00:02:40,920 Svo það virkilega að vera fær um að hægur hlutur niður með því að setja brot lið með b, 54 00:02:40,920 --> 00:02:43,040 og þá í málinu. 55 00:02:43,040 --> 00:02:46,169 >> Síðan þegar þú hefur stillt brot þitt lið, er hægt að keyra forritið. 56 00:02:46,169 --> 00:02:47,960 Og ef þú hefur einhverjar stjórn lína rifrildi, 57 00:02:47,960 --> 00:02:51,610 þú tilgreinir þær hér, ekki hvenar þú skrifar GDB nafn program. 58 00:02:51,610 --> 00:02:55,980 Þú verður að tilgreina allar stjórn lína rök með því að taka r, eða hlaupa, 59 00:02:55,980 --> 00:03:00,270 og þá hvað stjórn lína rifrildi þú þarft inni forritinu. 60 00:03:00,270 --> 00:03:03,510 There ert a tala af öðrum í raun mikilvægt og gagnlegt skipanir 61 00:03:03,510 --> 00:03:04,970 inni af landsframleiðslu umhverfi. 62 00:03:04,970 --> 00:03:07,540 Svo láta mig bara fljótt fara yfir nokkrar af þeim. 63 00:03:07,540 --> 00:03:11,320 >> Í fyrsta lagi er n, sem er stytting á næsta, og þú getur slegið á næsta stað n, 64 00:03:11,320 --> 00:03:12,304 bæði myndi vinna. 65 00:03:12,304 --> 00:03:13,470 Og það er bara styttingin. 66 00:03:13,470 --> 00:03:17,540 Og eins og þú hefur sennilega nú þegar fengið er notað til að, að vera fær um að slá inn hluti 67 00:03:17,540 --> 00:03:20,520 styttri er almennt betri. 68 00:03:20,520 --> 00:03:24,100 Og hvað það mun gera það mun stíga fram einn kóðanum. 69 00:03:24,100 --> 00:03:26,170 Svo það verður að halda áfram þar til virka símtalinu. 70 00:03:26,170 --> 00:03:28,350 Og þá í stað þess köfun í að virka 71 00:03:28,350 --> 00:03:33,130 og fara í gegnum öll þessi störf númer, það verður bara að hafa það hlutverk. 72 00:03:33,130 --> 00:03:34,400 >> Fallið verður kallað. 73 00:03:34,400 --> 00:03:35,733 Það mun gera hvað starf hennar er. 74 00:03:35,733 --> 00:03:38,870 Það mun skila gildi til virka sem kallaði það. 75 00:03:38,870 --> 00:03:42,490 Og þá munt þú fara til the næsta lína af þeirri starf virka. 76 00:03:42,490 --> 00:03:44,555 Ef þú vilt að stíga inni á virka, 77 00:03:44,555 --> 00:03:46,430 í stað þess að bara að hafa það framkvæma, sérstaklega 78 00:03:46,430 --> 00:03:50,004 ef þú heldur að vandamálið gæti liggja inni að virka, 79 00:03:50,004 --> 00:03:52,670 þú gætir auðvitað sett hlé benda inni að virka. 80 00:03:52,670 --> 00:03:57,820 Eða ef þú ert nú þegar í gangi, þú getur nota s til að stíga fram eina línu af kóða. 81 00:03:57,820 --> 00:04:01,170 >> Þannig að þetta mun stíga á og kafa í aðgerðir, 82 00:04:01,170 --> 00:04:04,750 í stað þess að bara hafa keyrt og halda áfram á sömu aðgerðina 83 00:04:04,750 --> 00:04:07,380 að þú ert í fyrir kembiforrit. 84 00:04:07,380 --> 00:04:09,870 Ef þú vilt alltaf að vita gildi breytu, 85 00:04:09,870 --> 00:04:12,507 þú getur slegið p, eða prenta, og þá breyta heiti. 86 00:04:12,507 --> 00:04:15,090 Og það mun prenta út til yðar, inni á gdb umhverfi, 87 00:04:15,090 --> 00:04:19,110 nafn breytu, sem you-- afsakar me-- gildi breytunnar 88 00:04:19,110 --> 00:04:20,064 sem þú hefur nefnt. 89 00:04:20,064 --> 00:04:23,230 Ef þú vilt vita gildi á hverjum staðbundin breytu aðgengileg hvaðan 90 00:04:23,230 --> 00:04:25,970 þú ert nú í þinn program, getur þú slærð upplýsa heimamenn. 91 00:04:25,970 --> 00:04:28,332 Það er mikið hraðar en slá p og þá hvað, 92 00:04:28,332 --> 00:04:30,540 skráningu út allar breytur sem þú veist eru. 93 00:04:30,540 --> 00:04:34,370 Þú getur slegið upplýsingum heimamenn, og það mun prenta út allt fyrir þig. 94 00:04:34,370 --> 00:04:37,770 Næst er bt, sem er stutt fyrir bak Trace. 95 00:04:37,770 --> 00:04:41,680 Nú, almennt, sérstaklega snemma í CS50, 96 00:04:41,680 --> 00:04:44,450 þú munt ekki raunverulega hafa tækifæri að nota BT, eða aftur Trace, 97 00:04:44,450 --> 00:04:47,860 vegna þess að þú ert ekki að hafa aðgerðir að hringja í önnur störf. 98 00:04:47,860 --> 00:04:50,450 >> Þú gætir hafa helstu hringja í virka, en það er líklega það. 99 00:04:50,450 --> 00:04:53,199 Þú þarft ekki að öðru hlutverki að hringja í annað virka, sem 100 00:04:53,199 --> 00:04:54,880 kallar annan valkost, og svo framvegis. 101 00:04:54,880 --> 00:04:57,550 En eins og áætlanir þínar fá meira flókið, og sérstaklega 102 00:04:57,550 --> 00:05:00,290 þegar þú byrjar að vinna með endurkvæmni, aftur rekja 103 00:05:00,290 --> 00:05:05,150 getur verið mjög gagnleg leið til að láta þig konar fá smá samhengi þar 104 00:05:05,150 --> 00:05:06,460 Ég er í áætlun mína. 105 00:05:06,460 --> 00:05:10,590 Svo segja að þú hafir skrifað númerið þitt, og þú veist að helsta kallar virka 106 00:05:10,590 --> 00:05:14,720 f sem kallar virka g, sem kallar virka h. 107 00:05:14,720 --> 00:05:17,650 Þannig að við höfum nokkur lög af hreiður fara á hér. 108 00:05:17,650 --> 00:05:19,440 >> Ef þú ert inni á GDB umhverfi þitt, 109 00:05:19,440 --> 00:05:21,640 og þú veist Inni H, en þú gleymir 110 00:05:21,640 --> 00:05:27,210 um hvað fékk þig þangað sem þú are-- þú getur slegið BT, eða bak rakið, 111 00:05:27,210 --> 00:05:32,370 og það mun prenta út h, g, f meginatriðum ásamt einhverjum öðrum upplýsingum, sem 112 00:05:32,370 --> 00:05:35,984 gefur þér vísbendingu um að, OK helstu kallað f-f heitir g, g heitir h 113 00:05:35,984 --> 00:05:37,900 og það er þar sem ég nú er í áætlun mína. 114 00:05:37,900 --> 00:05:41,380 Svo það getur verið mjög gagnlegt, sérstaklega þar sem dulinn-nesi á gdb 115 00:05:41,380 --> 00:05:45,667 verður svolítið yfirþyrmandi, að finna út nákvæmlega hvar hlutirnir eru. 116 00:05:45,667 --> 00:05:48,500 Að lokum, þegar kerfið er að gert, eða þegar þú ert búinn kembiforrit það 117 00:05:48,500 --> 00:05:50,125 og þú vilt að stíga í burtu frá gdb umhverfi, 118 00:05:50,125 --> 00:05:51,940 það hjálpar að vita hvernig á að fá út úr því. 119 00:05:51,940 --> 00:05:55,500 Þú getur slegið q eða Hætta til að komast út. 120 00:05:55,500 --> 00:05:59,220 Nú, áður vídeó dag Ég undirbúið þrjótur forrit 121 00:05:59,220 --> 00:06:03,900 heitir buggy1, sem ég saman úr skrá sem kallast buggy1.c. 122 00:06:03,900 --> 00:06:06,500 Eins og þú might búast við, þetta Námið er í raun kerrunni. 123 00:06:06,500 --> 00:06:08,990 Eitthvað fer úrskeiðis þegar ég reyni og keyra það. 124 00:06:08,990 --> 00:06:13,014 Nú, því miður, ég óvart eytt buggy1.c skrá minn, 125 00:06:13,014 --> 00:06:15,930 svo í því skyni fyrir mig að reikna út hvað er að gerast rangt með þessu forriti, 126 00:06:15,930 --> 00:06:18,770 Ég ætla að hafa að nota GDB konar blindni, reyna 127 00:06:18,770 --> 00:06:22,372 að sigla í gegnum þetta forrit til reikna út nákvæmlega hvað er að fara úrskeiðis. 128 00:06:22,372 --> 00:06:24,580 En að nota bara verkfæri við höfum nú þegar lært um, 129 00:06:24,580 --> 00:06:27,700 við getum nokkurn veginn mynd út nákvæmlega hvað það er. 130 00:06:27,700 --> 00:06:30,740 Svo skulum fara yfir til CS50 IDE og hafa a líta. 131 00:06:30,740 --> 00:06:33,155 OK, þannig að við erum hér í minn CS50 IDE umhverfi, 132 00:06:33,155 --> 00:06:35,697 og ég ætla að stækka smá svo þú getur séð smá meira. 133 00:06:35,697 --> 00:06:38,530 Í flugstöðinni gluggann minn, ef ég lista innihald núverandi forstöðumaður minn 134 00:06:38,530 --> 00:06:41,250 með LS, munum við sjá að ég hafa a par af uppspretta skrá 135 00:06:41,250 --> 00:06:44,982 hér, þar á meðal áður rætt buggy1. 136 00:06:44,982 --> 00:06:46,940 Hvað nákvæmlega fer á þegar Ég að reyna að hlaupa buggy1. 137 00:06:46,940 --> 00:06:47,773 Jæja við skulum finna út. 138 00:06:47,773 --> 00:06:52,510 Ég gerð punktur rista, þrjótur, og ég ýta á Enter. 139 00:06:52,510 --> 00:06:53,670 >> Skiptingu galla. 140 00:06:53,670 --> 00:06:55,000 Það er ekki gott. 141 00:06:55,000 --> 00:06:57,180 Ef þú manst, a skiptingu kenna yfirleitt 142 00:06:57,180 --> 00:07:01,540 sér stað þegar við aðgang minni að við erum ekki leyft að snerta. 143 00:07:01,540 --> 00:07:03,820 Við höfum einhvern veginn náð utan við mörk 144 00:07:03,820 --> 00:07:05,995 af því hvað forritið er þýðanda, hefur gefið okkur. 145 00:07:05,995 --> 00:07:08,310 Og svo þegar er að vísbending að halda í verkfærakistu 146 00:07:08,310 --> 00:07:10,660 þegar við byrjum kembiforrit aðferð. 147 00:07:10,660 --> 00:07:13,620 Eitthvað hefur farið lítið rangt hér. 148 00:07:13,620 --> 00:07:15,935 >> Allt í lagi, þannig að við skulum byrja upp gdb umhverfi 149 00:07:15,935 --> 00:07:19,030 og sjá hvort við getum fundið út hvað nákvæmlega vandamálið er. 150 00:07:19,030 --> 00:07:21,674 Ég ætla að hreinsa skjáinn minn, og ég ætla að slá GDB 151 00:07:21,674 --> 00:07:24,340 aftur, til að slá inn gdb umhverfi, og nafn af the program 152 00:07:24,340 --> 00:07:27,450 að ég vil að kemba, buggy1. 153 00:07:27,450 --> 00:07:30,182 Við fáum smá skilaboð, lesa tákn frá buggy1, gert. 154 00:07:30,182 --> 00:07:32,390 Allt sem þýðir það dregið saman allan kóðann, 155 00:07:32,390 --> 00:07:35,570 og nú er verið hlaðið inn í GDB, og það er tilbúið til að fara. 156 00:07:35,570 --> 00:07:37,140 >> Nú, hvað mig langar að gera? 157 00:07:37,140 --> 00:07:39,130 Manstu hvað við Fyrsta skrefið venjulega er 158 00:07:39,130 --> 00:07:42,540 eftir að ég er inni þessu umhverfi? 159 00:07:42,540 --> 00:07:44,540 Vonandi sagði þér að setja a brot lið, vegna þess 160 00:07:44,540 --> 00:07:46,240 í raun það er það sem ég vil gera. 161 00:07:46,240 --> 00:07:47,990 Nú, ég hef ekki Kóðinn fyrir þetta 162 00:07:47,990 --> 00:07:50,948 fyrir framan mig, sem er sennilega ekki dæmigerður nota málið, við the vegur. 163 00:07:50,948 --> 00:07:52,055 Þú verður sennilega. 164 00:07:52,055 --> 00:07:52,680 Svo er það gott. 165 00:07:52,680 --> 00:07:55,790 En miðað við að þú ert ekki, það er sá fall sem þú veist 166 00:07:55,790 --> 00:07:58,880 er til í hvert einasta C program? 167 00:07:58,880 --> 00:08:04,420 Sama hversu stór eða hversu flókið það er þessi aðgerð er til ákveðið. 168 00:08:04,420 --> 00:08:05,440 Main, ekki satt? 169 00:08:05,440 --> 00:08:08,870 >> Svo galli allt annað, við getum setja brot lið á main. 170 00:08:08,870 --> 00:08:12,200 Og aftur, ég gæti bara slá brjóta helstu, í stað þess að b. 171 00:08:12,200 --> 00:08:14,650 Og ef þú ert forvitinn, ef þú alltaf slá út í langan skipun 172 00:08:14,650 --> 00:08:16,800 og þá átta sig á að þú slegið rangt hlutur, 173 00:08:16,800 --> 00:08:18,770 og þú vilt losna af öllu sem ég gerði bara, 174 00:08:18,770 --> 00:08:22,029 hægt að taka stjórn U, sem mun eyða öllu og koma þér aftur 175 00:08:22,029 --> 00:08:23,570 að upphafi bendilinn línum. 176 00:08:23,570 --> 00:08:26,569 A einhver fjöldi hraðar en bara halda niðri eyða eða hitting það fullt sinnum 177 00:08:26,569 --> 00:08:27,080 yfir. 178 00:08:27,080 --> 00:08:28,740 >> Þannig að við munum setja brot lið á helstu. 179 00:08:28,740 --> 00:08:32,970 Og eins og þú geta sjá, það segir að við höfum setja brot lið á skrá buggy1.c, 180 00:08:32,970 --> 00:08:36,330 og virðist fyrsta línan af kóða á helstu er lína sjö. 181 00:08:36,330 --> 00:08:38,080 Aftur, við höfum ekki frumskrár hér, 182 00:08:38,080 --> 00:08:40,429 en ég geri ráð fyrir að það er segja mér sannleikann. 183 00:08:40,429 --> 00:08:44,510 Og þá, ég er bara að reyna og hlaupa the program, r. 184 00:08:44,510 --> 00:08:45,360 Byrjar program. 185 00:08:45,360 --> 00:08:48,160 Allt í lagi, þannig að þessi skilaboð er svolítið dulinn. 186 00:08:48,160 --> 00:08:50,160 En í grundvallaratriðum er það að gerast hér er að það er bara 187 00:08:50,160 --> 00:08:53,350 segja mér að ég hef lenti hlé minn lið, brot lið númer 1. 188 00:08:53,350 --> 00:08:55,877 >> Og svo, að lína af kóða, Engin slík skrá né mappa. 189 00:08:55,877 --> 00:08:57,710 Eina ástæðan fyrir því að Ég ætla að sjá þessi skilaboð 190 00:08:57,710 --> 00:09:00,800 er vegna þess að ég óvart eytt buggy.c skrá minn. 191 00:09:00,800 --> 00:09:04,050 Ef buggy1.c skrá minn verið í núverandi möppu, 192 00:09:04,050 --> 00:09:06,920 þessi lína þarna væri í raun segja mér hvað lína af kóða 193 00:09:06,920 --> 00:09:08,214 bókstaflega les. 194 00:09:08,214 --> 00:09:09,380 Því miður, ég eyddi því. 195 00:09:09,380 --> 00:09:14,790 Við erum að fara að þurfa að konar vafra gegnum þetta aðeins meira í blindni. 196 00:09:14,790 --> 00:09:17,330 >> OK, þannig að við skulum sjá, hvað Ég vil gera hér? 197 00:09:17,330 --> 00:09:21,770 Jæja, ég vildi eins og til vita hvað sveitarfélaga breytur kannski eru í boði fyrir mig. 198 00:09:21,770 --> 00:09:23,570 Ég hef byrjað að forritið mitt. 199 00:09:23,570 --> 00:09:28,515 Við skulum sjá hvað gæti verið þegar frumstilla fyrir okkur. 200 00:09:28,515 --> 00:09:31,430 Ég gerð Info heimamenn, ekki heimamenn. 201 00:09:31,430 --> 00:09:33,960 Allt í lagi, þannig að ekki gefa mér tonn af upplýsingum. 202 00:09:33,960 --> 00:09:37,600 Ég gæti reynt og prenta út breytu, en ég veit ekki hvaða breytu nöfn. 203 00:09:37,600 --> 00:09:39,930 Ég gæti reynt bak ummerki, en ég er inni main, 204 00:09:39,930 --> 00:09:43,710 þannig að ég veit að ég hef ekki gert annar virka símtalinu núna. 205 00:09:43,710 --> 00:09:47,710 >> Svo lítur út eins einu valkostirnir mínir eru að nota n eða svo og byrja að kafa í. 206 00:09:47,710 --> 00:09:49,630 Ég ætla að nota n. 207 00:09:49,630 --> 00:09:51,180 Svo ég slá n. 208 00:09:51,180 --> 00:09:53,060 Oh my gosh, hvað er að gerast hér. 209 00:09:53,060 --> 00:09:56,260 Program fengið merki, SIGSEGV skiptingu kenna, 210 00:09:56,260 --> 00:09:57,880 og þá er allt fullt af efni. 211 00:09:57,880 --> 00:09:58,880 Ég er nú þegar óvart. 212 00:09:58,880 --> 00:10:00,980 Jæja, það er í raun geta lært margt hér. 213 00:10:00,980 --> 00:10:02,520 Svo hvað segir þetta okkur? 214 00:10:02,520 --> 00:10:09,180 Hvað það segir okkur er, this program er um að, en hefur ekki enn, seg kenna. 215 00:10:09,180 --> 00:10:12,550 Einkum, ég ætla að stækka enn frekar hér, 216 00:10:12,550 --> 00:10:18,980 það er um að seg kenna um eitthvað sem kallast strcmp. 217 00:10:18,980 --> 00:10:22,705 >> Nú getum við ekki rætt þessi aðgerð mikið. 218 00:10:22,705 --> 00:10:25,580 En það is-- vegna þess að við erum ekki að fara að tala um alla virka sem 219 00:10:25,580 --> 00:10:28,610 er til í C Standard library-- en þeir eru allir í boði fyrir þig, 220 00:10:28,610 --> 00:10:32,110 sérstaklega ef þú tekur a líta á reference.cs50.net. 221 00:10:32,110 --> 00:10:35,000 Og strcmp er mjög öflugur fall sem er til inni 222 00:10:35,000 --> 00:10:38,070 af string.h haus skrá, sem er haus 223 00:10:38,070 --> 00:10:41,970 skrá sem er tileinkað aðgerðir að vinna með og vinna strengi. 224 00:10:41,970 --> 00:10:49,830 >> Einkum hvað strcmp gerir er það saman gildi tveimur strengjum. 225 00:10:49,830 --> 00:10:54,160 Þannig að ég er að fara að skiptingu kenna á símtali stendur til að strcmp það virðist. 226 00:10:54,160 --> 00:10:58,530 Ég lenti n, og í raun ég að fá skilaboð, program slitið með merki SIGSEGV 227 00:10:58,530 --> 00:11:01,370 skiptingu kenna. Svo nú Ég reyndar hef seg faulted, 228 00:11:01,370 --> 00:11:06,479 og áætlun mín er ansi mikið í raun gefið upp. 229 00:11:06,479 --> 00:11:07,770 Þetta er endir af the program. 230 00:11:07,770 --> 00:11:10,370 Það braut niður, hrundi það. 231 00:11:10,370 --> 00:11:14,740 Svo var ekki mikið, en ég reyndar gerði læra töluvert 232 00:11:14,740 --> 00:11:16,747 frá þessu litla reynslu. 233 00:11:16,747 --> 00:11:17,580 Hvað hef ég lært? 234 00:11:17,580 --> 00:11:22,020 Jæja, program minn hrun ansi mikið strax. 235 00:11:22,020 --> 00:11:26,300 Áætlun mín hrun á a kalla til strcmp, en ég 236 00:11:26,300 --> 00:11:30,560 ekki hafa allir staðværar breytur í mínum program á þeim tíma sem hún frýs. 237 00:11:30,560 --> 00:11:37,320 Svo hvað band, eða strengir, gæti ég hugsanlega verið að bera saman. 238 00:11:37,320 --> 00:11:42,140 Ef ég hef ekki allir heimamaður breytur, þú gætir 239 00:11:42,140 --> 00:11:45,520 surmise að ég have-- það kannski er global breyta, sem gæti verið satt. 240 00:11:45,520 --> 00:11:47,670 >> En almennt, það virðist eins og ég er að bera saman 241 00:11:47,670 --> 00:11:52,070 eitthvað sem er ekki til. 242 00:11:52,070 --> 00:11:54,130 Svo skulum rannsaka að aðeins lengra. 243 00:11:54,130 --> 00:11:55,120 Þannig að ég ætla að hreinsa skjáinn minn. 244 00:11:55,120 --> 00:11:57,536 Ég ætla að hætta út af GDB umhverfi fyrir a second. 245 00:11:57,536 --> 00:12:01,300 Og ég er að hugsa, OK, þannig að það er engar staðbundnar breytur í forritinu mínu. 246 00:12:01,300 --> 00:12:06,444 Ég velti því ef til vill ég átti að fara í streng sem stjórn lína rifrildi. 247 00:12:06,444 --> 00:12:07,610 Svo skulum prófa bara þetta út. 248 00:12:07,610 --> 00:12:09,020 Ég hef ekki gert þetta áður. 249 00:12:09,020 --> 00:12:14,244 >> Við skulum sjá hvort kannski ef ég keyra þetta forrit með stjórn lína rifrildi það virkar. 250 00:12:14,244 --> 00:12:16,140 Huh, ekki skiptingu kenna það. 251 00:12:16,140 --> 00:12:17,870 Það sagði bara við mig að ég mynstrağur það út. 252 00:12:17,870 --> 00:12:19,170 Svo kannski er að festa hér. 253 00:12:19,170 --> 00:12:27,560 Og reyndar, ef ég fer aftur og líta á í raun Kóðinn fyrir buggy1.c, 254 00:12:27,560 --> 00:12:31,180 það virðist eins og það sem ég er að gera er Ég er að hringja til að strcmp án 255 00:12:31,180 --> 00:12:34,010 athuga hvort í raun argv [1] til. 256 00:12:34,010 --> 00:12:36,730 Þetta er í raun Kóðinn fyrir buggy1.c. 257 00:12:36,730 --> 00:12:38,855 Svo það sem ég þarf virkilega að gera hér til að festa áætlun mína, 258 00:12:38,855 --> 00:12:40,835 miðað Ég hef skrá fyrir framan mig, er 259 00:12:40,835 --> 00:12:44,740 bara bæta ávísun til að gera úr skugga um að argc er jafnt og 2. 260 00:12:44,740 --> 00:12:47,780 Þannig að þetta dæmi, aftur, eins og ég sagði, er svolítið háttuð, ekki satt? 261 00:12:47,780 --> 00:12:49,840 Þú ert yfirleitt ekki að fara að tilviljun að eyða kóðann þinn 262 00:12:49,840 --> 00:12:51,820 og þá þarf að reyna og kemba program. 263 00:12:51,820 --> 00:12:53,120 En vonandi, gaf það þú mynd sem sýnir 264 00:12:53,120 --> 00:12:55,120 um hvers konar hluti sem þú gætir verið að hugsa um 265 00:12:55,120 --> 00:12:56,610 eins og þú ert að kemba program. 266 00:12:56,610 --> 00:12:58,760 >> Hvað er ástand mála hér? 267 00:12:58,760 --> 00:13:00,510 Hvað breytur gera I hafa aðgengilegar mér? 268 00:13:00,510 --> 00:13:03,600 Hvar nákvæmlega er áætlun mín hrun, á hvaða línu, 269 00:13:03,600 --> 00:13:05,240 á hvað kalla til hvaða starfsemi? 270 00:13:05,240 --> 00:13:06,952 Hvers konar vísbendingar er að gefa mér? 271 00:13:06,952 --> 00:13:08,910 Og það er einmitt konar hugarfari sem þú 272 00:13:08,910 --> 00:13:12,820 skal fá inn þegar þú ert hugsa um kembiforrit programs. 273 00:13:12,820 --> 00:13:13,820 >> Ég er Doug Lloyd. 274 00:13:13,820 --> 00:13:16,140 Þetta er CS50. 275 00:13:16,140 --> 00:15:08,642