1 00:00:00,000 --> 00:00:00,309 2 00:00:00,309 --> 00:00:02,350 [? DAN ARMADARAS:] Hi, Ég er [? Dan Armadaras?]. 3 00:00:02,350 --> 00:00:04,410 Í dag, við erum að fara að að horfa á kembiforrit. 4 00:00:04,410 --> 00:00:06,697 Ekki aðeins eigum við að fara að tala um einhverja tækni, 5 00:00:06,697 --> 00:00:09,280 en einnig erum við að fara að horfa á sumir af the lögun sem 6 00:00:09,280 --> 00:00:14,170 innan CS50 IDE sem leyfa þú til auðveldlega kemba forrit. 7 00:00:14,170 --> 00:00:16,272 >> Bara eitt dæmi um eitthvað sem getur farið úrskeiðis 8 00:00:16,272 --> 00:00:18,730 og það er í raun eitthvað sem við höfum þegar séð áður. 9 00:00:18,730 --> 00:00:23,200 Í þessu tilfelli, þetta er C program sem tekur við tölu frá notanda, 10 00:00:23,200 --> 00:00:27,580 skiptir það með tveimur, og veitir framleiðsla til baka til notandans. 11 00:00:27,580 --> 00:00:30,610 Nú af því sem við höfum séð fyrr í fyrirlestrum, 12 00:00:30,610 --> 00:00:34,370 við vitum að þetta verður í raun valdið tilteknar tegundir deild vandamál 13 00:00:34,370 --> 00:00:35,860 þegar við höfum oddatölur. 14 00:00:35,860 --> 00:00:40,330 >> Sérstaklega, við verðum bara henda nokkuð eftir kommu. 15 00:00:40,330 --> 00:00:43,170 Nú vitum við að þetta gerist að vera raunin. 16 00:00:43,170 --> 00:00:47,430 Og ef við keyra það, getum við staðfest grunsemdir okkar, fyrst, með samantekt. 17 00:00:47,430 --> 00:00:50,460 Og þá, með því að keyra og slá oddatala. 18 00:00:50,460 --> 00:00:51,720 >> Þetta er ekkert nýtt. 19 00:00:51,720 --> 00:00:54,490 En þetta er í raun Dæmi um galla sem 20 00:00:54,490 --> 00:00:58,810 getur verið innan stærri áætlunar sem verður erfiðara að elta uppi. 21 00:00:58,810 --> 00:01:02,640 Jafnvel þó að við vitum hvað málið er satt kjarni málsins 22 00:01:02,640 --> 00:01:06,250 gæti verið að reyna að bera kennsl á sérstaklega þar sem villa á sér stað, 23 00:01:06,250 --> 00:01:09,750 skilgreina hvað þessi vandamál er, og þá að ákveða það. 24 00:01:09,750 --> 00:01:14,400 Svo bjóðum þetta sem dæmi um hvað gæti verið eitthvað 25 00:01:14,400 --> 00:01:19,030 sem við vitum nú þegar, en hægt er að grafinn innan öðrum þáttum kóðann. 26 00:01:19,030 --> 00:01:23,090 >> Svo opna þetta önnur uppspretta merkjamál skrá sem dæmi, 27 00:01:23,090 --> 00:01:27,165 þessi skipting vandamál er nú hluti af stærri áætlun. 28 00:01:27,165 --> 00:01:29,040 Enn gæti verið smá bita háttuð, og við 29 00:01:29,040 --> 00:01:31,076 gæti verið fær til auðveldlega þekkja það, sérstaklega 30 00:01:31,076 --> 00:01:32,450 þar sem við erum bara að ræða þetta. 31 00:01:32,450 --> 00:01:38,250 En við getum reikna út að þetta Vandamálið getur verið á stærri skala. 32 00:01:38,250 --> 00:01:45,450 >> Ef ég safna saman þetta og nú hlaupa það, sláðu oddatala, 33 00:01:45,450 --> 00:01:49,816 getum við séð að við komumst ekki nákvæmlega framleiðsla sem við kann að hafa gert ráð fyrir. 34 00:01:49,816 --> 00:01:51,690 Í þessu tiltekna tilviki, við gætum sagt að við 35 00:01:51,690 --> 00:01:56,060 langar að telja allar tölur frá einum upp að einhverju tilteknum fjölda. 36 00:01:56,060 --> 00:01:58,130 Og við sjáum að við hafa ýmis málefni 37 00:01:58,130 --> 00:02:03,880 hér ef við erum outputting, einfaldlega, 0 og 1 þegar við veita inntak 5. 38 00:02:03,880 --> 00:02:07,380 >> Þannig að við vitum nú þegar að það er vandamál hér. 39 00:02:07,380 --> 00:02:11,662 En við megum ekki vita nákvæmlega þar sem þessi mál í raun til. 40 00:02:11,662 --> 00:02:13,620 Nú einn af þeim leiðum sem við getum reynt að laga þetta 41 00:02:13,620 --> 00:02:15,745 er eitthvað sem við höfum þegar verið kynnt. 42 00:02:15,745 --> 00:02:18,880 Við getum bara notað það á stærri skala. 43 00:02:18,880 --> 00:02:21,680 >> Á línu 14, höfum við þetta printf virka, 44 00:02:21,680 --> 00:02:25,620 sem gerir okkur kleift að prenta út ríkisins á ýmsum stykki af upplýsingar. 45 00:02:25,620 --> 00:02:28,880 Og þetta er eitthvað sem þér ætti að nýta í forritinu 46 00:02:28,880 --> 00:02:33,100 að reyna að reikna út nákvæmlega hvað er gerast í ýmsum línum af kóða. 47 00:02:33,100 --> 00:02:36,350 Svo jafnvel ef þetta er ekki endanleg framleiðsla sem við í raun 48 00:02:36,350 --> 00:02:39,830 langar að framleiða úr þetta forrit, við enn 49 00:02:39,830 --> 00:02:42,300 gæti hafa sumir kemba yfirlýsingar þar við 50 00:02:42,300 --> 00:02:46,970 getur prófað að reikna út nákvæmlega hvað er að gerast inni í kóða. 51 00:02:46,970 --> 00:02:51,210 >> Þannig að í þessu tilfelli, ég mun printf með kemba tag. 52 00:02:51,210 --> 00:02:53,540 Í þessu tilfelli, þetta er bara kemba string 53 00:02:53,540 --> 00:02:56,840 að ég er upp að setja svo að það verður mjög skýr í framleiðslu númerið mitt 54 00:02:56,840 --> 00:02:59,200 hvað það er sem ég vil sýna. 55 00:02:59,200 --> 00:03:04,410 Og framleiðsla hér fjöldi sem við höfum reiknað. 56 00:03:04,410 --> 00:03:06,800 >> Í þessu tilfelli, gæti ég langar að vita nákvæmlega 57 00:03:06,800 --> 00:03:11,380 hvað er að gerast áður og eftir einhverjum tilteknum útreikningur. 58 00:03:11,380 --> 00:03:16,224 Svo ég gæti notað printf áður og eftir þeirri línu af kóða. 59 00:03:16,224 --> 00:03:18,640 Í þessu tilviki væri ég jafnvel gera það alveg ljóst svolítið meira 60 00:03:18,640 --> 00:03:21,960 með því að segja kemba áður og kemba eftir svo 61 00:03:21,960 --> 00:03:26,540 að ég rugla mig með margar línur sem líta nákvæmlega eins. 62 00:03:26,540 --> 00:03:32,290 >> Nú ef við endurþýða þetta og hlaupa það skaltu slá inn númerið eins fimm ný, 63 00:03:32,290 --> 00:03:35,090 getum við séð að við höfum nú framleiðsla fyrir og eftir 64 00:03:35,090 --> 00:03:40,670 og komast að því að við höfum ekki gert skýra deild eða ljóst hafa af fjölda 65 00:03:40,670 --> 00:03:43,680 sem við viljum í raun að gera. 66 00:03:43,680 --> 00:03:48,660 Nú í þessu tilfelli, þetta er í raun ekki ljóst framleiðsla. 67 00:03:48,660 --> 00:03:52,440 Það er í raun ekki ljóst niðurstaða sem við viljum út úr þessu tiltekna áætlun. 68 00:03:52,440 --> 00:03:54,427 >> Og þetta er, aftur, a svolítið háttuð. 69 00:03:54,427 --> 00:03:57,510 En, kannski, einn af þeim hlutum sem við gætum gert ef forskrift sagði 70 00:03:57,510 --> 00:04:01,900 að við viljum skipta þetta með 2 og bæta 1-- svo í öðrum orðum, 71 00:04:01,900 --> 00:04:04,550 við viljum að umferð up-- þá vér skulum vita, að við gátum 72 00:04:04,550 --> 00:04:08,060 gera þessa tilteknu hlutur, í þessu tilfelli. 73 00:04:08,060 --> 00:04:14,010 Hér við vitum að við munum vera fær um að bæta við 1 til helming fjölda okkar. 74 00:04:14,010 --> 00:04:16,490 >> Skulum laun þetta og staðfesta að þetta 75 00:04:16,490 --> 00:04:18,860 hagar sér á þann hátt að við viljum. 76 00:04:18,860 --> 00:04:21,980 Við sjáum að nú áður hafa, höfum við númer 5. 77 00:04:21,980 --> 00:04:26,620 Eftir að hafa, höfum við númer 3, sem samkvæmt forskrift okkar, 78 00:04:26,620 --> 00:04:29,292 er það sem við vildum gera. 79 00:04:29,292 --> 00:04:31,000 En ef við skoðum framleiðsla hér, við getum 80 00:04:31,000 --> 00:04:33,760 sjá að við gætum hafa annað galla að öllu leyti, sem er 81 00:04:33,760 --> 00:04:36,940 sem við erum að byrja telja okkar frá 0. 82 00:04:36,940 --> 00:04:39,390 >> Nú aftur, þetta er eitthvað sem við höfum séð í fortíðinni 83 00:04:39,390 --> 00:04:42,500 og við getum lagað alveg fúslega. 84 00:04:42,500 --> 00:04:44,790 En í þessu tilfelli, við einnig haft hag 85 00:04:44,790 --> 00:04:48,940 þess að nota printf yfirlýsingu beint inni til hliðar 86 00:04:48,940 --> 00:04:52,930 að vita nákvæmlega hvar að villa var komið. 87 00:04:52,930 --> 00:04:55,150 Svo printf yfirlýsingar eru mjög gagnlegt í að hjálpa 88 00:04:55,150 --> 00:04:57,940 þú ákveða hvar, einmitt í uppspretta merkjamál, 89 00:04:57,940 --> 00:05:00,620 sérstakur villa er viðburður. 90 00:05:00,620 --> 00:05:03,650 >> Og það er einnig mikilvægt að gera sér grein fyrir sem, eins og við erum að skrifa kóðann, 91 00:05:03,650 --> 00:05:06,052 við gætum þurft forsendur um ástand forrit. 92 00:05:06,052 --> 00:05:08,510 Eða við gætum hafa forsendur um hvaða hluti af the program 93 00:05:08,510 --> 00:05:13,020 er í raun rétt eða rangt þegar síðar sem við að byggja á þeirri áætlun 94 00:05:13,020 --> 00:05:15,950 og gera það hluta af a flókið og stærri program 95 00:05:15,950 --> 00:05:19,700 að við skiljum að sumir þáttur af því er í raun gallaðir. 96 00:05:19,700 --> 00:05:22,680 >> Using printf getur raunverulega hjálpað þrengja niður og skilgreina 97 00:05:22,680 --> 00:05:26,430 héruð forrit sem getur ekki vera atferlis nákvæmlega á þann hátt að við 98 00:05:26,430 --> 00:05:29,500 búast við, miðað við gefnar forsendur. 99 00:05:29,500 --> 00:05:31,460 En það er önnur verkfæri í boði, eins og heilbrigður, 100 00:05:31,460 --> 00:05:34,860 sem leyfa okkur að reyna að reikna út hvar villa á sér stað 101 00:05:34,860 --> 00:05:39,930 og einnig, sérstaklega, hvað það eru að gerast inni í áætluninni. 102 00:05:39,930 --> 00:05:41,990 >> Svo er að nota printf mjög gagnlegt þegar við viljum 103 00:05:41,990 --> 00:05:45,900 að bera kennsl á ákveðin svæði á forrit sem hafa galla. 104 00:05:45,900 --> 00:05:47,730 En það verður einnig leiðinlegur eftir smá stund. 105 00:05:47,730 --> 00:05:50,500 Í þessu tilfelli, þetta er tiltölulega einfalt forrit 106 00:05:50,500 --> 00:05:52,750 með aðeins einn eða tveir breytum. 107 00:05:52,750 --> 00:05:57,260 Og það verður mjög auðvelt fyrir okkur að prenta út verðmæti þeirra breytum 108 00:05:57,260 --> 00:05:59,670 í tengslum við stærri áætlun. 109 00:05:59,670 --> 00:06:02,670 >> En við gætum haft mismunandi forrit sem hefur margar breytur. 110 00:06:02,670 --> 00:06:06,530 Og það getur ekki verið alveg svo auðvelt að nota printf 111 00:06:06,530 --> 00:06:10,120 til að reyna að meta hvað er að gerast hvert og eitt af þeim breytum 112 00:06:10,120 --> 00:06:13,590 eins og the program er framkvæmd. 113 00:06:13,590 --> 00:06:16,960 Það er forrit sem er til kallað aflúsara program. 114 00:06:16,960 --> 00:06:20,320 Í þessu tilfelli, en sá sem við munum Notkun er GNU aflúsara, eða GDB, 115 00:06:20,320 --> 00:06:24,260 sem gerir okkur kleift að skoða innri starfsemi af A program þar miklu meira 116 00:06:24,260 --> 00:06:25,700 nákvæmar leið. 117 00:06:25,700 --> 00:06:28,810 >> Við getum í raun framkvæma GDB frá the stjórn lína 118 00:06:28,810 --> 00:06:35,370 hér með því einfaldlega að slá GDB og stjórn sem við viljum að kemba. 119 00:06:35,370 --> 00:06:37,550 Í þessu tilfelli, telja. 120 00:06:37,550 --> 00:06:41,650 Nú í þessu tilfelli getum við séð að það komin að hvetja sem segir GDB. 121 00:06:41,650 --> 00:06:44,020 Og við getum í raun framkvæma skipanir til gdb 122 00:06:44,020 --> 00:06:48,260 að í raun að byrja framkvæmd program, stöðva það á ákveðnum stöðum, 123 00:06:48,260 --> 00:06:51,060 meta breytur og skoða breytur sem 124 00:06:51,060 --> 00:06:54,152 eru í áætluninni ríki á viðkomandi augnabliki, 125 00:06:54,152 --> 00:06:55,110 og svo framvegis og svo framvegis. 126 00:06:55,110 --> 00:06:57,240 Það afla a einhver fjöldi af orku til okkar. 127 00:06:57,240 --> 00:06:59,960 >> En það gerist bara svo að CS50 IDE einnig 128 00:06:59,960 --> 00:07:05,870 veitir GUI eða notanda tengi fyrir gdb sem 129 00:07:05,870 --> 00:07:11,120 gerir okkur kleift að gera þetta án þess að þurfa stjórn lína tengi neinu tagi 130 00:07:11,120 --> 00:07:13,560 eða yfirleitt jafnvel. 131 00:07:13,560 --> 00:07:16,930 Leiðin sem ég get nálgast það er með því að nota kemba hnappinn 132 00:07:16,930 --> 00:07:20,120 á the mjög toppur af CS50 IDE. 133 00:07:20,120 --> 00:07:24,280 Nú í fortíðinni, það sem við höfum séð er að við nota skipunina 134 00:07:24,280 --> 00:07:27,660 lína að safna saman og þá keyra forrit. 135 00:07:27,660 --> 00:07:29,790 >> Kemba hnappur hjartarskinn bæði af þeim skrefum. 136 00:07:29,790 --> 00:07:34,380 En það mun koma upp aflúsara flipann lengst til hægri 137 00:07:34,380 --> 00:07:38,280 sem gerir okkur kleift að skoða ýmsar eigna áætlunarinnar 138 00:07:38,280 --> 00:07:40,500 eins og það er framkvæmd. 139 00:07:40,500 --> 00:07:44,280 Ef ég smelli kemba, í þetta ræða, það mun koma upp 140 00:07:44,280 --> 00:07:48,230 a nýr flipi í vélinni glugga á mjög neðst. 141 00:07:48,230 --> 00:07:51,160 >> Og þú getur séð að þetta flipi hefur einhverjar upplýsingar á the mjög toppur. 142 00:07:51,160 --> 00:07:52,670 Og við getum að miklu leyti hunsa þetta. 143 00:07:52,670 --> 00:07:54,800 En eitt af því sem sem við viljum til tilkynningar 144 00:07:54,800 --> 00:07:57,170 er að það birtist sama sem við 145 00:07:57,170 --> 00:08:03,000 myndi fá ef við reyndum að keyra gera á C program í flugstöðinni glugga. 146 00:08:03,000 --> 00:08:06,230 >> Hér getum við séð að það er í gangi clang, og það hefur a fjölbreytni af fánar, 147 00:08:06,230 --> 00:08:12,660 og það er að setja saman count.c skrá okkar, sem var flipinn valin á þeim tíma 148 00:08:12,660 --> 00:08:15,100 sem ég högg kemba. 149 00:08:15,100 --> 00:08:18,010 Svo er þetta mjög gagnlegur því nú nota þessa kemba hnappinn, 150 00:08:18,010 --> 00:08:23,280 við getum samtímis saman og þá Keyra forritið sem við í raun 151 00:08:23,280 --> 00:08:24,460 vilt keyra. 152 00:08:24,460 --> 00:08:27,880 >> Eitt af því sem fánar sem er mikilvægt, í þessu tilfelli, 153 00:08:27,880 --> 00:08:30,190 við höfum í raun verið að nota sem lengst 154 00:08:30,190 --> 00:08:32,450 en líka bara gerði nokkrar hönd veifa [inaudible], sem 155 00:08:32,450 --> 00:08:33,820 er þetta einn hérna. 156 00:08:33,820 --> 00:08:35,790 Í clang, segir það -ggdb3. 157 00:08:35,790 --> 00:08:38,570 158 00:08:38,570 --> 00:08:41,250 Í þessu tilfelli, það sem við erum segja clang, þýðanda okkar, 159 00:08:41,250 --> 00:08:43,820 er að við viljum að safna saman kerfi okkar. 160 00:08:43,820 --> 00:08:46,810 En einnig veita hvað eru heitir tákn upplýsingar 161 00:08:46,810 --> 00:08:50,940 svo sem þýðandinn hefur í raun aðgang til a einhver fjöldi af undirliggjandi upplýsingar 162 00:08:50,940 --> 00:08:52,610 sem innan áætlunarinnar. 163 00:08:52,610 --> 00:08:55,260 >> Nánar tiltekið er númerið aðgerðir sem ég hef, 164 00:08:55,260 --> 00:08:58,000 nöfn þeirra aðgerða, breytur, tegundir 165 00:08:58,000 --> 00:09:01,730 að þessi breytur eru, og margs af öðrum hlutum sem hjálpa aflúsara 166 00:09:01,730 --> 00:09:04,350 aðgerð hennar. 167 00:09:04,350 --> 00:09:06,600 Nú er það eitthvað annað það er mikilvægt að nefna 168 00:09:06,600 --> 00:09:10,280 þegar við erum að ræða í gangi a program með þessum hætti. 169 00:09:10,280 --> 00:09:13,660 >> Takið eftir að það hefur í raun alinn upp nýjan flipa í okkar vélinni 170 00:09:13,660 --> 00:09:14,780 neðarlega. 171 00:09:14,780 --> 00:09:18,600 Við þurfum ekki lengur að hafa samskipti beint við endastöðvar. 172 00:09:18,600 --> 00:09:21,420 En þetta nýr flipi er raun endastöðvar. 173 00:09:21,420 --> 00:09:26,710 Það er bara sérstaklega við gangi forrit sem við höfum búið til. 174 00:09:26,710 --> 00:09:29,270 >> Takið eftir að neðst í samsetning með nokkrum framleiðsla 175 00:09:29,270 --> 00:09:33,500 með clang þýðanda og GDB, sem við getum að miklu leyti hunsað, 176 00:09:33,500 --> 00:09:37,570 það sýnir í raun framleiðsla á áætlun okkar á mjög neðst. 177 00:09:37,570 --> 00:09:41,240 Nú er mikilvægt að átta sig á að þetta einn gluggi í raun 178 00:09:41,240 --> 00:09:43,360 mun sýna þér framleiðsla úr forritinu 179 00:09:43,360 --> 00:09:47,190 en einnig er hægt að samþykkja inntak fyrir þessi forrit, eins og heilbrigður. 180 00:09:47,190 --> 00:09:49,260 >> Svo eftir sem segir Færðu inn númer, 181 00:09:49,260 --> 00:09:53,050 sem er sama framleiðsla sem við höfðum hafði í flugstöðinni glugga áður. 182 00:09:53,050 --> 00:09:55,510 En það er nú sýnt í þessu nýja flipa. 183 00:09:55,510 --> 00:09:56,550 Ég get inntak númer. 184 00:09:56,550 --> 00:10:00,900 Og það mun í raun virka eins og við reiknum 185 00:10:00,900 --> 00:10:05,890 sýna okkur kemba okkar, framleiðsla, framleiðsla sem gæti verið þrjótur, 186 00:10:05,890 --> 00:10:07,010 eins og við höfum séð áður. 187 00:10:07,010 --> 00:10:10,460 Og á mjög botn, það í raun hefur sumir viðbótar framleiðsla 188 00:10:10,460 --> 00:10:14,550 frá VLF bara að segja að þetta forrit hefur lokið. 189 00:10:14,550 --> 00:10:16,655 >> Nú eins og þú sást í þessu einkum hlaupa í gegnum, 190 00:10:16,655 --> 00:10:19,370 það var ekki sérlega gagnlegur því jafnvel 191 00:10:19,370 --> 00:10:23,740 þótt við hefðum aflúsara menu koma upp, þetta var enn í gangi program. 192 00:10:23,740 --> 00:10:26,790 Hvergi gerði það í raun hlé framkvæmd fyrir okkur 193 00:10:26,790 --> 00:10:30,767 að vera fær um að skoða allar breytur sem innan. 194 00:10:30,767 --> 00:10:32,850 Það er eitthvað annað að við verðum að gera til 195 00:10:32,850 --> 00:10:36,910 að fá GDB að viðurkenna að við viljum til að gera hlé framkvæmd áætlunarinnar 196 00:10:36,910 --> 00:10:42,820 og ekki bara leyfa því að halda áfram venjulega eins og við gerðum í öðrum tilvikum. 197 00:10:42,820 --> 00:10:45,530 >> Til að gera hlé framkvæmd, á einhverjum tilteknum línu, 198 00:10:45,530 --> 00:10:47,830 við þurfum að búa til það sem er kallað brot lið. 199 00:10:47,830 --> 00:10:52,670 Og brot lið er mjög auðveldlega búið í þessu CS50 IDE með því að taka músina 200 00:10:52,670 --> 00:10:57,090 og því að smella beint til vinstri af einhverjum tilteknum línu númer. 201 00:10:57,090 --> 00:10:59,920 Þegar ég gera það, rauður punktur birtist, sem gefur til kynna 202 00:10:59,920 --> 00:11:02,300 að þessi lína er nú brot lið. 203 00:11:02,300 --> 00:11:07,540 >> Og næst þegar að ég keyrt GDB, það hættir framkvæmd á þeim brot lið 204 00:11:07,540 --> 00:11:10,280 þegar það nær að línu af kóða. 205 00:11:10,280 --> 00:11:12,230 Nú er þetta mikilvægt hlutur til að átta sig 206 00:11:12,230 --> 00:11:16,140 að það er ekki endilega mál sem hver lína af kóða 207 00:11:16,140 --> 00:11:17,880 er í raun aðgengileg. 208 00:11:17,880 --> 00:11:23,780 Ef ég væri að búa til fall upp hér, fyrir example-- ógilt f-- 209 00:11:23,780 --> 00:11:31,230 og bara gera prenta línu here-- halló world-- ef ég kalla aldrei þessa aðgerð, 210 00:11:31,230 --> 00:11:34,770 það verður raunin að, ef ég setja brot lið hér, 211 00:11:34,770 --> 00:11:36,220 virka mun aldrei vera kölluð. 212 00:11:36,220 --> 00:11:38,310 Og þess vegna, þetta einkum brot lið 213 00:11:38,310 --> 00:11:43,040 mun aldrei gera hlé framkvæmd áætlunarinnar. 214 00:11:43,040 --> 00:11:48,020 >> Svo skulum segja að ég skapa rétt a brot lið á einhverjum línu af kóða 215 00:11:48,020 --> 00:11:50,340 sem mun í raun að framkvæma. 216 00:11:50,340 --> 00:11:53,470 Nú í þessu tilfelli, er þetta Fyrsta línan í the aðalæð virka. 217 00:11:53,470 --> 00:11:56,630 Svo það verður örugglega raunin að um leið og ég byrja framkvæmd, 218 00:11:56,630 --> 00:11:58,580 the mjög fyrstur lína verður náð. 219 00:11:58,580 --> 00:12:00,230 GDB mun gera hlé framkvæmd. 220 00:12:00,230 --> 00:12:04,100 Og þá mun ég vera fær um að samskipti við aflúsara. 221 00:12:04,100 --> 00:12:08,480 >> Þú getur sett margar línur sem Viðmiðunarmörk, ef þú vilt. 222 00:12:08,480 --> 00:12:11,365 Við getum einnig að búa til línu upp hér í þessum hluta kóða 223 00:12:11,365 --> 00:12:12,490 sem verður aldrei náð. 224 00:12:12,490 --> 00:12:14,744 Og við getum líka sett eina hér neðar. 225 00:12:14,744 --> 00:12:16,660 Ástæðan fyrir því að við gerðum langar að gera þetta við munum 226 00:12:16,660 --> 00:12:19,119 fara í smá meiri smáatriði í bara smá stund. 227 00:12:19,119 --> 00:12:21,660 Svo nú, láttu mig bara slökkt þessi stig til viðbótar brjóta 228 00:12:21,660 --> 00:12:24,940 svo að við getum litið á það sem gerist þegar ég hef eitt hlé 229 00:12:24,940 --> 00:12:27,650 lið í áætlun mína. 230 00:12:27,650 --> 00:12:29,410 Ég hef gert nokkrar breytingar á þessari áætlun. 231 00:12:29,410 --> 00:12:30,750 Þannig að ég þarf að vista það. 232 00:12:30,750 --> 00:12:34,490 Ég mun smella kemba svo að ég get byrja samantekt og þá 233 00:12:34,490 --> 00:12:36,880 framkvæmd aflúsara. 234 00:12:36,880 --> 00:12:40,632 >> Við munum sjá að eftir augnablik, að lína að við valið sem hlé 235 00:12:40,632 --> 00:12:43,360 lið er auðkenndur með gulum. 236 00:12:43,360 --> 00:12:47,440 Við getum einnig tekið eftir því að í efri rétt í kemba spjaldið 237 00:12:47,440 --> 00:12:50,940 að hlétáknið hefur snúið í smá spilunartáknið. 238 00:12:50,940 --> 00:12:54,710 Þetta þýðir að við höfum hlé framkvæmd, í þessu tiltekna tilfelli. 239 00:12:54,710 --> 00:12:57,840 Og hitting á play takkann myndi leyfa okkur að halda áfram framkvæmd 240 00:12:57,840 --> 00:13:00,000 á þeim tilteknum stað. 241 00:13:00,000 --> 00:13:03,240 >> Takið eftir að það er a par af öðrum hnappar í þessum kemba spjaldið, 242 00:13:03,240 --> 00:13:04,220 einnig. 243 00:13:04,220 --> 00:13:09,470 Stíga yfir, sem gerir mig að framkvæma þessi eina línu af kóða 244 00:13:09,470 --> 00:13:14,030 og stíga yfir á þá línu sem að Næsta einn, sem, í þessu tilfelli, 245 00:13:14,030 --> 00:13:17,060 myndi þýða að við printf yfirlýsing er keyrð. 246 00:13:17,060 --> 00:13:22,310 Og það verður þá að gera hlé framkvæmd á línu 13, eins og svo. 247 00:13:22,310 --> 00:13:25,090 >> Og það er líka skref í aðgerð, sem 248 00:13:25,090 --> 00:13:28,950 er gagnlegt ef ég hef búið annað aðgerðir annars staðar í the uppspretta merkjamál. 249 00:13:28,950 --> 00:13:31,420 Og ég vil stíga inn þau virka frekar en 250 00:13:31,420 --> 00:13:33,050 framkvæma þá aðgerð í heild. 251 00:13:33,050 --> 00:13:37,279 En við munum líta á þrepi í aðgerð á aðeins augnablik. 252 00:13:37,279 --> 00:13:40,320 Nú taka eftir einhverjum öðrum hlutum sem í raun fyrir hendi innan þessa kemba spjaldið. 253 00:13:40,320 --> 00:13:44,110 >> Við höfum þetta spjaldið kallað kalla stakkur, sem sýnir okkur 254 00:13:44,110 --> 00:13:45,300 hvar nákvæmlega við erum. 255 00:13:45,300 --> 00:13:48,550 Í þessu tilfelli, við erum inni af the aðalæð virka. 256 00:13:48,550 --> 00:13:50,880 Handrit okkar heitir count.c. 257 00:13:50,880 --> 00:13:53,820 Og við verður að vera á lína 13, dálkur ón, sem 258 00:13:53,820 --> 00:13:58,950 er nákvæmlega það sem ljómuðu svæði af the uppspretta merkjamál til kynna, eins og heilbrigður. 259 00:13:58,950 --> 00:14:02,435 >> Nú taka eftir því að þetta sýnir einnig undir staðbundna breytu kafla 260 00:14:02,435 --> 00:14:06,710 allar breytur sem til innan þessa aðgerð. 261 00:14:06,710 --> 00:14:08,930 Það er mikilvægt að hafa í huga að allar breytur 262 00:14:08,930 --> 00:14:12,580 mun birtast í þessum heimamaður breytu kafla innan virka, 263 00:14:12,580 --> 00:14:14,380 jafnvel áður en þeir eru skilgreindir. 264 00:14:14,380 --> 00:14:19,160 Við sjáum hér að við höfum breytu kallað NUM, hefur sjálfgefið gildi 0, 265 00:14:19,160 --> 00:14:21,280 og það er int. 266 00:14:21,280 --> 00:14:24,110 >> Nú áður en við frumstilla í raun allra þessara breyta, 267 00:14:24,110 --> 00:14:26,685 við erum ekki endilega tryggingu til að sjá gildið 0. 268 00:14:26,685 --> 00:14:29,200 Og eftir öðrum aftökum sem þú hefur framkvæmt 269 00:14:29,200 --> 00:14:32,020 og stöðu minni þínum þegar þú keyrir í raun þetta forrit, 270 00:14:32,020 --> 00:14:34,605 þú gætir fundið að þú ekki sjá gildi 0 271 00:14:34,605 --> 00:14:36,550 og í staðinn, einhver önnur brjálaður tölur. 272 00:14:36,550 --> 00:14:38,390 >> En ekki hafa áhyggjur óður í það. 273 00:14:38,390 --> 00:14:44,610 Það er ekki að fara að vera viðeigandi til þú frumstilla í raun gildi. 274 00:14:44,610 --> 00:14:49,630 Nú í þessu tilfelli getum við séð að Ég hef flutt nokkrum framleiðsla. 275 00:14:49,630 --> 00:14:52,131 Og ég, núna, bið framkvæmd. 276 00:14:52,131 --> 00:14:53,880 En í þessu tilfelli, hvað Ég vil virkilega að gera 277 00:14:53,880 --> 00:14:58,060 er að nú stíga yfir þessa línu af kóða svo að ég get í raun 278 00:14:58,060 --> 00:15:04,390 fyrirspurn notanda fyrir þessi int að við viljum að nota í kerfi okkar. 279 00:15:04,390 --> 00:15:07,060 >> Nú í þessu tilfelli, þegar Ég lenti stíga yfir, tilkynningar 280 00:15:07,060 --> 00:15:11,940 að hlé eða öllu heldur Ferilskrá hnappur hefur breytt þessari pásuhnappinn 281 00:15:11,940 --> 00:15:14,022 vegna þess að þetta númer er í raun framkvæmd. 282 00:15:14,022 --> 00:15:15,730 Hvað er að gerast núna er að það er 283 00:15:15,730 --> 00:15:21,630 að bíða eftir okkur til að inntak einhverjar upplýsingar eins og við getum séð með texta framleiðsla okkar 284 00:15:21,630 --> 00:15:23,600 á mjög neðst. 285 00:15:23,600 --> 00:15:25,787 >> Svo núna, þetta er í raun ekki bið, 286 00:15:25,787 --> 00:15:28,620 jafnvel þó það, eins konar, virðist að vera vegna þess að ekkert er að gerast. 287 00:15:28,620 --> 00:15:32,360 En það gerist bara svo að í tiltekið mál mitt á línu 13, 288 00:15:32,360 --> 00:15:34,210 Ég er að bíða notandi inntak. 289 00:15:34,210 --> 00:15:39,130 Og svo GDB er ekki hægt að skoða a program eins og það er í gangi. 290 00:15:39,130 --> 00:15:43,370 >> Nú næsta skipti sem ég kem inn nokkrar input-- svo ég ætla inn að númer 5, 291 00:15:43,370 --> 00:15:46,140 eins og við höfum séð í past-- högg aftur, og við 292 00:15:46,140 --> 00:15:51,430 taka eftir því, þegar í stað, gdb þagnar og aftur, er lögð áhersla á næstu línu. 293 00:15:51,430 --> 00:15:55,320 En taka eftir því núna, eins og a afleiðing af inputting okkar gildi, 294 00:15:55,320 --> 00:15:58,930 við höfum uppfært gildinu inni af heimamaður breytur okkar, sem 295 00:15:58,930 --> 00:16:05,560 er mjög gagnlegt að vita nákvæmlega hvað þessi tala var í minni. 296 00:16:05,560 --> 00:16:10,650 >> Nú get ég leyft þetta forrit til að halda áfram spila þar til í lok framkvæmd hennar 297 00:16:10,650 --> 00:16:12,570 með hitting á Halda áfram. 298 00:16:12,570 --> 00:16:16,410 Við sjáum að mjög fljótt virkar program ljúka framkvæmd 299 00:16:16,410 --> 00:16:19,790 með sama framleiðsla sem við hafði áður aflúsara lokar, 300 00:16:19,790 --> 00:16:23,170 og nú þetta forrit hefur hætt alveg. 301 00:16:23,170 --> 00:16:25,320 >> Ég sýna að aðeins fyrir tilgangur sjá hvað 302 00:16:25,320 --> 00:16:27,280 gerist þegar við högg í raun Halda áfram. 303 00:16:27,280 --> 00:16:30,640 En við í raun erum að fara að vil fara aftur inn í þessa áætlun 304 00:16:30,640 --> 00:16:33,820 svo að við getum reynt að kemba nákvæmlega það sem er að gerast. 305 00:16:33,820 --> 00:16:37,980 Nú þegar ég er að nota aflúsara, má ég ekki þurfa þessar kemba printf yfirlýsingar. 306 00:16:37,980 --> 00:16:43,860 >> Svo ég gæti eytt þeim eins og ég mun gera nú bara að fara aftur til einfaldari kóða okkar 307 00:16:43,860 --> 00:16:45,950 að við höfðum smá stund síðan. 308 00:16:45,950 --> 00:16:48,790 Nú þegar ég vista forrita og framkvæma það, 309 00:16:48,790 --> 00:16:53,700 það mun aftur, fara til að fyrstu brjóta lið sem ég hafði á línu 11. 310 00:16:53,700 --> 00:16:57,700 Og ég mun vera fær til að skoða breytur mínir eins og ég vil gera. 311 00:16:57,700 --> 00:17:00,695 >> Það gerist bara svo að þetta hluti er ekki mjög áhugavert, 312 00:17:00,695 --> 00:17:04,364 Og ég veit að ég er að fara að prenta út þessa yfirlýsingu. 313 00:17:04,364 --> 00:17:05,280 Vinsamlegast sláðu inn númerið. 314 00:17:05,280 --> 00:17:08,099 Og þá, ég veit að ég er að fara að spyrja notanda um að tölu. 315 00:17:08,099 --> 00:17:13,329 Svo kannski, ég vil í raun að færa minn brjóta lið svolítið neðar. 316 00:17:13,329 --> 00:17:16,710 >> Þú getur fjarlægt brot stig með því að smella aftur, beint 317 00:17:16,710 --> 00:17:18,460 vinstra megin við þann línu númer. 318 00:17:18,460 --> 00:17:22,200 Sem rauður punktur mun hverfa, sem gefur til kynna sem að brjóta lið er nú farinn. 319 00:17:22,200 --> 00:17:24,780 Nú í þessu tilfelli, hefur verið um framkvæmd bið. 320 00:17:24,780 --> 00:17:27,770 Og svo það er í raun ekki að fara að halda áfram í þessu tiltekna. 321 00:17:27,770 --> 00:17:30,210 En ég get sett pásu benda svolítið síðar. 322 00:17:30,210 --> 00:17:33,880 >> Og þegar ég byrja aftur núna minn númer, það mun halda áfram og segja 323 00:17:33,880 --> 00:17:36,190 að benda á að brot lið. 324 00:17:36,190 --> 00:17:37,374 Aftur, ég högg á Halda áfram. 325 00:17:37,374 --> 00:17:39,040 Virðist ekki eins og ekkert er að gerast. 326 00:17:39,040 --> 00:17:41,450 En það er vegna þess að mínum númerið er að bíða fyrir hjálpina. 327 00:17:41,450 --> 00:17:47,900 Ég mun koma inn á númer 5, Enter, og nú er næsta brot lið verður högg. 328 00:17:47,900 --> 00:17:50,570 >> Nú í þessu tilfelli, þetta er lína af kóða 329 00:17:50,570 --> 00:17:53,820 að áður, vissum við varð að vera gallaðir. 330 00:17:53,820 --> 00:17:57,590 Þannig að við skulum meta það sem gerist á þessum ákveðnum tímapunkti. 331 00:17:57,590 --> 00:18:02,620 Þegar lína er auðkenndur þetta lína hefur ekki enn farið fram. 332 00:18:02,620 --> 00:18:06,490 Þannig að í þessu tilfelli getum við séð að ég hafa a tala, sem 333 00:18:06,490 --> 00:18:11,610 Ég er með tölu sem kallast NUM sem hefur gildi 5. 334 00:18:11,610 --> 00:18:15,090 Og ég ætla að vera að framkvæma sumir stærðfræði á þeim fjölda. 335 00:18:15,090 --> 00:18:20,130 >> Ef ég stíga yfir það, við getum Takið eftir að gildið fyrir NUM 336 00:18:20,130 --> 00:18:23,780 hefur breyst í samræmi við tölur sem við höfum í raun gert. 337 00:18:23,780 --> 00:18:26,810 Og nú að við erum inni þetta fyrir lykkju 338 00:18:26,810 --> 00:18:29,090 eða nú að til hliðar sjálft er auðkenndur, 339 00:18:29,090 --> 00:18:32,450 sjáum við að við höfum nýtt breytu sem heitir i sem 340 00:18:32,450 --> 00:18:35,370 er að fara til að nota í a ð fyrir lykkju. 341 00:18:35,370 --> 00:18:38,230 >> Nú man áður en að ég nefna að stundum þú ert 342 00:18:38,230 --> 00:18:43,470 fara að sjá einhvers konar brjálaður númer sem sjálfgefið fyrir þann fjölda 343 00:18:43,470 --> 00:18:45,530 eða að breyta er reyndar forsniðin. 344 00:18:45,530 --> 00:18:49,040 Við getum séð að nákvæmlega hér í þessari breytu 345 00:18:49,040 --> 00:18:51,345 Ég kallaði, sem hefur ekki enn verið forsniðin 346 00:18:51,345 --> 00:18:53,560 á þeim tíma sem undirstrika. 347 00:18:53,560 --> 00:18:57,070 En við sjáum að það hefur sumir tala að við myndum í raun ekki von á. 348 00:18:57,070 --> 00:18:57,620 >> Það er allt í lagi. 349 00:18:57,620 --> 00:18:59,661 Ekki hafa áhyggjur óður í það vegna þess að við höfum í raun ekki 350 00:18:59,661 --> 00:19:04,970 frumstilla að tala fyrr en ég stíga yfir þessa línu og verðmæti 351 00:19:04,970 --> 00:19:08,560 I hefur verið forsniðin við gildið 1. 352 00:19:08,560 --> 00:19:11,400 Svo til að sjá að það er í raun málið, við skulum stíga yfir. 353 00:19:11,400 --> 00:19:14,420 Við getum nú séð að það lína hefur verið keyrð. 354 00:19:14,420 --> 00:19:17,000 Og við erum nú að leggja áherslu þetta printf línu. 355 00:19:17,000 --> 00:19:22,230 >> Og við getum nú séð hversu gildin okkar af i og 3 hafa breyst í tímans rás. 356 00:19:22,230 --> 00:19:26,450 Þetta er mjög gagnlegt að gera, í raun, er að stíga yfir línurnar aftur og aftur. 357 00:19:26,450 --> 00:19:30,480 Og þú getur fundið það í raun gerist inni í lykkja 358 00:19:30,480 --> 00:19:33,660 og hvað gerist við breytur inni í því fyrir lykkju 359 00:19:33,660 --> 00:19:39,200 eins og þessi framkvæmd áætlunarinnar á sér stað eitt skref í einu. 360 00:19:39,200 --> 00:19:41,110 >> Nú á þessum tímapunkti, ég steig yfir bara nóg 361 00:19:41,110 --> 00:19:44,210 að ég er nú í lok áætlun mína. 362 00:19:44,210 --> 00:19:46,980 Ef ég stíga yfir það, það mun reyndar hætta framkvæmd 363 00:19:46,980 --> 00:19:48,860 eins og við höfum séð í fortíðinni. 364 00:19:48,860 --> 00:19:52,110 Leyfðu mér að endurræsa þetta, enn og aftur, svo sem ég get bent eitthvað annað út, 365 00:19:52,110 --> 00:19:53,320 einnig. 366 00:19:53,320 --> 00:19:55,350 >> Í þessu tilfelli, er það nú að biðja mig, aftur, 367 00:19:55,350 --> 00:19:57,100 fyrir fjölda, sem Ég mun aftur, inn. 368 00:19:57,100 --> 00:20:00,300 En í þetta sinn ætla ég að slá í hærri tala þannig að til hliðar 369 00:20:00,300 --> 00:20:02,540 mun kunnugt oftar. 370 00:20:02,540 --> 00:20:06,090 Í þessu tilfelli, ég ætla til að slá inn gildi 11. 371 00:20:06,090 --> 00:20:08,390 >> Nú aftur vegna þess að ég myndi setja hlé benda á línu 15, 372 00:20:08,390 --> 00:20:10,490 það er að fara að varpa ljósi þessi lína. 373 00:20:10,490 --> 00:20:12,980 Við sjáum að okkar númer 11 er rétt 374 00:20:12,980 --> 00:20:15,560 fulltrúa í staðbundnar breytur okkar. 375 00:20:15,560 --> 00:20:22,460 Stepping yfir að við getum nú horfa á það sem gerist verðmæti okkar i 376 00:20:22,460 --> 00:20:25,680 eins og við halda áfram inni þetta fyrir lykkju. 377 00:20:25,680 --> 00:20:31,960 Það fær hækkar í hvert skipti sem við ná til the toppur af því til hliðar. 378 00:20:31,960 --> 00:20:35,110 >> Nú einn af þeim hlutum sem gæti verið gagnlegt að gera á framkvæmd 379 00:20:35,110 --> 00:20:40,490 þessarar áætlunar er fyrir mig að í raun breyta breytur midstream að sjá 380 00:20:40,490 --> 00:20:42,450 hvað verður um áætlun mína. 381 00:20:42,450 --> 00:20:46,540 Í þessu tilviki er I raun og veru tvísmella á gildi. 382 00:20:46,540 --> 00:20:48,040 Takið eftir að það verður textareitinn. 383 00:20:48,040 --> 00:20:50,280 >> Nú get ég inn öðruvísi gildi að öllu leyti 384 00:20:50,280 --> 00:20:55,700 til að sjá hvernig forritið mitt hagar þegar ég hef breytt þá breytu. 385 00:20:55,700 --> 00:20:59,560 Nú í þessu tilfelli, breytan Ég inniheldur nú Gildið 10. 386 00:20:59,560 --> 00:21:02,810 En forritið er samt bið í framkvæmd. 387 00:21:02,810 --> 00:21:07,610 Þegar ég stíga yfir, ég sé að gildi i, sem ég kom inn sem 10, 388 00:21:07,610 --> 00:21:12,170 er ekki meiri en verðmæti num, sem strax veldur for lykkju 389 00:21:12,170 --> 00:21:14,240 að hætta framkvæmd. 390 00:21:14,240 --> 00:21:16,210 >> Nú það er ekki eina Ástæðan fyrir því að þú myndir 391 00:21:16,210 --> 00:21:19,450 langar að breyta breytu í stað. 392 00:21:19,450 --> 00:21:22,210 Þú gætir í raun vilja til að reyna að breyta henni þannig 393 00:21:22,210 --> 00:21:24,590 að þú getur haldið áfram framkvæmd lykkju 394 00:21:24,590 --> 00:21:27,370 eða svo að þú getur breytt eitthvert gildi fyrir það 395 00:21:27,370 --> 00:21:32,630 nær það til um ákveðna setja af stærðfræði að þú ert að fara að framkvæma. 396 00:21:32,630 --> 00:21:36,210 >> Svo nú er að við breyta í raun gildi i eins og the program var framkvæmd, 397 00:21:36,210 --> 00:21:39,540 það olli for lykkju til að hætta of snemma vegna, allt í einu, ég 398 00:21:39,540 --> 00:21:42,770 varð að vera meiri en gildið NUM, sem þýðir að að fyrir lykkju 399 00:21:42,770 --> 00:21:45,410 ekki lengur þörf til að framkvæma. 400 00:21:45,410 --> 00:21:48,780 Ennfremur gerðist það að vera Málið sem við breytt verðmæti i 401 00:21:48,780 --> 00:21:53,270 þegar línan 17 var lögð áhersla á, sem var tímapunktur 402 00:21:53,270 --> 00:21:56,280 að fyrir lykkja framkvæmd var í raun verið að meta. 403 00:21:56,280 --> 00:22:00,210 >> Ef ég hefði breytt verðmæti Ég á aðra línu, segja 19, 404 00:22:00,210 --> 00:22:03,360 við hefðum séð öðruvísi hegðun vegna lína 19 myndi 405 00:22:03,360 --> 00:22:08,310 hafa framkvæmt áður lykkju ástand var endurmetin. 406 00:22:08,310 --> 00:22:11,900 Nú á þessum tímapunkti, ég er, aftur, í lok þessarar áætlunar. 407 00:22:11,900 --> 00:22:15,707 Og ég get leyft þessu að halda áfram að leyfa program minn til að hætta náttúrulega. 408 00:22:15,707 --> 00:22:18,290 En það er a par af hlutur sem eru mikilvæg til að taka í burtu 409 00:22:18,290 --> 00:22:19,960 frá þessari tilteknu umræðu. 410 00:22:19,960 --> 00:22:22,490 Þú þarft að meta eigin forsendur þínar 411 00:22:22,490 --> 00:22:24,710 um hvernig kóðinn skal haga. 412 00:22:24,710 --> 00:22:28,220 Hvenær þú heldur að sumir stykki af kóða sem þú veist gerist að vinna, 413 00:22:28,220 --> 00:22:30,940 sem gæti verið rauður fáni að fara til baka og meta, og vera viss um að 414 00:22:30,940 --> 00:22:33,470 sem forsendu þinni hvernig sem kóðinn er starfrækt 415 00:22:33,470 --> 00:22:38,290 er í raun satt að hvernig það er gefið upp í uppspretta merkjamál. 416 00:22:38,290 --> 00:22:41,300 >> En jafnvel meira til að benda var þegar við erum að nota aflúsara, 417 00:22:41,300 --> 00:22:43,920 þú getur sett rofstaði á mismunandi línur af kóða, 418 00:22:43,920 --> 00:22:48,110 sem mun valda aflúsara til hlé framkvæmd á hvert þessara línum 419 00:22:48,110 --> 00:22:52,210 þannig að þú getur meta minni eða jafnvel breyta því í stað. 420 00:22:52,210 --> 00:22:55,630 Og aftur, mundu að þú getur búa til margar Rofstaðir svo að þú 421 00:22:55,630 --> 00:23:00,390 Einnig er hægt að halda áfram framkvæmd, sleppa yfir stórum hluta af kóða, 422 00:23:00,390 --> 00:23:04,790 og það mun sjálfkrafa gera hlé á næsta brot lið. 423 00:23:04,790 --> 00:23:07,760 >> Það er í raun lengra lögun af the aflúsara, eins og heilbrigður. 424 00:23:07,760 --> 00:23:10,170 En við verðum að vísa þér sumum síðari myndbönd 425 00:23:10,170 --> 00:23:14,090 í því skyni að virkilega stríða í sundur hvernig að nota þá einkum aðgerðir. 426 00:23:14,090 --> 00:23:15,990 Fyrir nú, þakka þér mjög mikið fyrir að horfa á. 427 00:23:15,990 --> 00:23:18,080 Og gangi þér vel kembiforrit.