1 00:00:00,000 --> 00:00:00,309 2 00:00:00,309 --> 00:00:02,350 [? DAN ARMADARAS:?] Tere, Ma olen [? Dan Armadaras?]. 3 00:00:02,350 --> 00:00:04,410 Täna me ei kavatse vaadates silumine. 4 00:00:04,410 --> 00:00:06,697 Me mitte ainult ei kavatse rääkida mõned tehnikad, 5 00:00:06,697 --> 00:00:09,280 vaid ka läheme vaatama mõned omadused sisalduvate 6 00:00:09,280 --> 00:00:14,170 jooksul CS50 IDE, mis võimaldavad hõlpsasti siluda programmi. 7 00:00:14,170 --> 00:00:16,272 >> Lihtsalt üks näide midagi, mida saab valesti minna 8 00:00:16,272 --> 00:00:18,730 ja see on tegelikult midagi et me oleme juba näinud. 9 00:00:18,730 --> 00:00:23,200 Sel juhul on tegemist C programmi mis aktsepteerib täisarv kasutaja, 10 00:00:23,200 --> 00:00:27,580 jagab selle kahte ning annab väljund tagasi kasutaja. 11 00:00:27,580 --> 00:00:30,610 Nüüd sellest, mida me oleme näinud varem loenguid, 12 00:00:30,610 --> 00:00:34,370 me teame, et see tegelikult põhjustada konkreetset tüüpi jaotus probleeme 13 00:00:34,370 --> 00:00:35,860 kui meil on paaritu arv. 14 00:00:35,860 --> 00:00:40,330 >> Täpsemalt, me lihtsalt visata midagi peale koma. 15 00:00:40,330 --> 00:00:43,170 Nüüd me teame, et see juhtub olema. 16 00:00:43,170 --> 00:00:47,430 Ja kui võtame, siis me võime kinnitada meie kahtlusi, esimene, koostades. 17 00:00:47,430 --> 00:00:50,460 Ja siis, joostes ja sisenemist paaritu arv. 18 00:00:50,460 --> 00:00:51,720 >> See ei ole midagi uut. 19 00:00:51,720 --> 00:00:54,490 Aga see on tegelikult Näiteks on viga, mis 20 00:00:54,490 --> 00:00:58,810 võib esineda ühes suurema programmi mis muutub raskemaks tabada. 21 00:00:58,810 --> 00:01:02,640 Kuigi me teame, mida küsimus on, tõsi asja tuum 22 00:01:02,640 --> 00:01:06,250 võib tuvastada püüdes spetsiaalselt kus viga esineb, 23 00:01:06,250 --> 00:01:09,750 tuvastada, mis seda probleemi on, ja siis millega seda. 24 00:01:09,750 --> 00:01:14,400 Nii annab see näiteks mis võiks olla midagi 25 00:01:14,400 --> 00:01:19,030 et me juba teame, kuid võib olla maetud jooksul muud elemendid koodi. 26 00:01:19,030 --> 00:01:23,090 >> Nii avada see teine ​​allikas koodifailist näiteks, 27 00:01:23,090 --> 00:01:27,165 see rajoon probleem on nüüd osa suuremast programmi. 28 00:01:27,165 --> 00:01:29,040 Ikka võib olla natuke natuke kunstlik, ja me 29 00:01:29,040 --> 00:01:31,076 võiks olla võimalik lihtsalt tuvastada seda, eriti 30 00:01:31,076 --> 00:01:32,450 sest me lihtsalt arutame seda. 31 00:01:32,450 --> 00:01:38,250 Aga me saame aru, et see probleem võib esineda ka laiemalt. 32 00:01:38,250 --> 00:01:45,450 >> Kui ma koostada selle ja nüüd käivitada, sisestage paaritu arv, 33 00:01:45,450 --> 00:01:49,816 näeme, et me ei saa täpselt väljund, et me oleme oodatud. 34 00:01:49,816 --> 00:01:51,690 Sel juhul, võib öelda, et me 35 00:01:51,690 --> 00:01:56,060 tahan loota kõik numbrid ühest kuni mõne konkreetse numbri. 36 00:01:56,060 --> 00:01:58,130 Ja me näeme, et me on erinevaid küsimusi 37 00:01:58,130 --> 00:02:03,880 siin, kui me väljastamist, lihtsalt, 0 ja 1, kui me anda panuse 5. 38 00:02:03,880 --> 00:02:07,380 >> Nii me juba teame, et seal on probleem siin. 39 00:02:07,380 --> 00:02:11,662 Aga me ei tea täpselt kus see küsimus on ka tegelikult olemas. 40 00:02:11,662 --> 00:02:13,620 Nüüd üks viise, mis saame proovida seda parandada 41 00:02:13,620 --> 00:02:15,745 on midagi, mida me oleme juba kasutusele võetud. 42 00:02:15,745 --> 00:02:18,880 Me võime lihtsalt kasutada seda ka laiemalt. 43 00:02:18,880 --> 00:02:21,680 >> On line 14, meil on Selle printf funktsiooni, 44 00:02:21,680 --> 00:02:25,620 mis võimaldab meil välja printida riik kohta erinevat teavet. 45 00:02:25,620 --> 00:02:28,880 Ja see on midagi, mida sa looks jooksul oma programmi 46 00:02:28,880 --> 00:02:33,100 proovida välja nuputada, millised täpselt on toimub erinevate rida koodi. 47 00:02:33,100 --> 00:02:36,350 Nii et isegi kui see ei ole lõpptoodangu et me tegelikult 48 00:02:36,350 --> 00:02:39,830 tahavad toota välja Selles programmis, me ikka 49 00:02:39,830 --> 00:02:42,300 võib-olla mõned siluda avaldused, kus me 50 00:02:42,300 --> 00:02:46,970 võib proovida aru saada täpselt, mida toimub sees meie koodi. 51 00:02:46,970 --> 00:02:51,210 >> Nii et kui ma lähen printf koos siluda tag. 52 00:02:51,210 --> 00:02:53,540 Sel juhul on see lihtsalt siluda string 53 00:02:53,540 --> 00:02:56,840 et ma olen üles-panna nii, et see muutub väga selge väljund minu kood 54 00:02:56,840 --> 00:02:59,200 mis see on, et ma tahan näidata. 55 00:02:59,200 --> 00:03:04,410 Ja Väljundiks arv et meil on arvutatud. 56 00:03:04,410 --> 00:03:06,800 >> Sellisel juhul võin tahan täpselt teada 57 00:03:06,800 --> 00:03:11,380 mis toimub enne ja Pärast mõningaid konkreetseid arvutusi. 58 00:03:11,380 --> 00:03:16,224 Nii et ma võiks kasutada printf enne ja pärast seda rida koodi. 59 00:03:16,224 --> 00:03:18,640 Sel juhul ma võiks isegi oleks natuke selgem 60 00:03:18,640 --> 00:03:21,960 öeldes siluda enne ja siluda pärast seda 61 00:03:21,960 --> 00:03:26,540 et ma ei ajage ennast mitmes reas, mis näevad välja samasugused. 62 00:03:26,540 --> 00:03:32,290 >> Nüüd, kui me kompileerida see ja käivitage see, sisesta number nagu viis uuesti, 63 00:03:32,290 --> 00:03:35,090 näeme, et meil on Nüüd väljund enne ja pärast 64 00:03:35,090 --> 00:03:40,670 ja leiavad, et me ei ole teinud selget jagunemise või selge millel on number 65 00:03:40,670 --> 00:03:43,680 et me tegelikult tahame teha. 66 00:03:43,680 --> 00:03:48,660 Nüüd sel juhul, see on ei ole tõesti selge väljundi. 67 00:03:48,660 --> 00:03:52,440 See ei ole tegelikult selge tulemus, et tahame välja just selle programmiga. 68 00:03:52,440 --> 00:03:54,427 >> Ja see on jällegi natuke kunstlik. 69 00:03:54,427 --> 00:03:57,510 Aga võib-olla üks neist asjadest, mis me võiks teha, kui kirjelduses öeldud 70 00:03:57,510 --> 00:04:01,900 et me tahame jagada seda 2 ja lisage 1-- nii teisisõnu 71 00:04:01,900 --> 00:04:04,550 tahame ümardada up-- siis me võiksime teada, et võiksime 72 00:04:04,550 --> 00:04:08,060 seda konkreetset asja, antud juhul. 73 00:04:08,060 --> 00:04:14,010 Nüüd siin me teame, et meil on võimalik lisada 1 meie poole võrra number. 74 00:04:14,010 --> 00:04:16,490 >> Olgem kompileerida seda ja kinnitavad, et see 75 00:04:16,490 --> 00:04:18,860 käitub nii, et me tahame. 76 00:04:18,860 --> 00:04:21,980 Me näeme, et nüüd enne võttes oleme number 5. 77 00:04:21,980 --> 00:04:26,620 Pärast oleme number 3, mis meie spetsifikatsioon, 78 00:04:26,620 --> 00:04:29,292 on see, mida me tahtsime teha. 79 00:04:29,292 --> 00:04:31,000 Aga kui me vaatame Väljundiks, saame 80 00:04:31,000 --> 00:04:33,760 näha, et meil oleks teine bug kokku, mis on 81 00:04:33,760 --> 00:04:36,940 et hakkame meie arv on 0. 82 00:04:36,940 --> 00:04:39,390 >> Nüüd jälle, see on midagi, et me oleme näinud varem 83 00:04:39,390 --> 00:04:42,500 ja me saame määrata üsna kergesti. 84 00:04:42,500 --> 00:04:44,790 Aga sel juhul me Samuti oli kasu 85 00:04:44,790 --> 00:04:48,940 kasutada printf avaldusega otse sees jaoks silmus 86 00:04:48,940 --> 00:04:52,930 täpselt teada, kus Selle vea tekkimist. 87 00:04:52,930 --> 00:04:55,150 Nii printf avaldused on väga kasulik, aidates 88 00:04:55,150 --> 00:04:57,940 teil otsustada, kus, just oma lähtekoodi, 89 00:04:57,940 --> 00:05:00,620 konkreetse vea tekkimist. 90 00:05:00,620 --> 00:05:03,650 >> Ja see on ka oluline mõista et nagu me kirjutada koodi, 91 00:05:03,650 --> 00:05:06,052 meil oleks eeldused seisundi kohta programmi. 92 00:05:06,052 --> 00:05:08,510 Või me võiksime olla eeldused mida osa programmist 93 00:05:08,510 --> 00:05:13,020 on tegelikult õige või vale, kui hiljem kui me ehitame selle programmi kohta 94 00:05:13,020 --> 00:05:15,950 ja teha seda osa keeruline ja suurema programmi 95 00:05:15,950 --> 00:05:19,700 et me mõistame, et teatud osa kohta, mis on tegelikult lollakas. 96 00:05:19,700 --> 00:05:22,680 >> Kasutades printf võib tõesti aidata kitsendada ja tuvastada 97 00:05:22,680 --> 00:05:26,430 piirkondade programm, mis ei tohi saab käitub täpselt nii, et me 98 00:05:26,430 --> 00:05:29,500 oota, mis põhineb meie eeldused. 99 00:05:29,500 --> 00:05:31,460 Aga seal on muud vahendid olemas, samuti, 100 00:05:31,460 --> 00:05:34,860 mis võimaldavad meil proovida aru saada, kus viga on toimunud 101 00:05:34,860 --> 00:05:39,930 ja ka konkreetselt, milliseid asju juhtub sees programm. 102 00:05:39,930 --> 00:05:41,990 >> Nii kasutades printf on väga kasulik, kui me tahame 103 00:05:41,990 --> 00:05:45,900 määrata kindlaks konkreetsed valdkonnad programm, mis on mõned bug. 104 00:05:45,900 --> 00:05:47,730 Aga see muutub ka tüütu mõne aja pärast. 105 00:05:47,730 --> 00:05:50,500 Sel juhul on see suhteliselt lihtne programm 106 00:05:50,500 --> 00:05:52,750 vaid ühe või kahe muutuja. 107 00:05:52,750 --> 00:05:57,260 Ja see muutub väga lihtne meile välja printida väärtus need muutujad 108 00:05:57,260 --> 00:05:59,670 kontekstis suurema programmi. 109 00:05:59,670 --> 00:06:02,670 >> Aga me võiksime olla erinev programm, mis on palju muutujaid. 110 00:06:02,670 --> 00:06:06,530 Ja see ei pruugi olla üsna nii lihtne kasutada printf 111 00:06:06,530 --> 00:06:10,120 proovida hinnata, mis toimub igaühele nendest muutujatest 112 00:06:10,120 --> 00:06:13,590 kui programmi täidetakse. 113 00:06:13,590 --> 00:06:16,960 Seal on programm, mis on olemas nimetatakse siluri programmi. 114 00:06:16,960 --> 00:06:20,320 Sel juhul, üks, et me kasutamine on GNU siluri või GDB, 115 00:06:20,320 --> 00:06:24,260 mis võimaldab meil kontrollida sisemise töös programmi palju 116 00:06:24,260 --> 00:06:25,700 üksikasjalikult. 117 00:06:25,700 --> 00:06:28,810 >> Me võime tegelikult ellu GDB käsurealt 118 00:06:28,810 --> 00:06:35,370 siin lihtsalt kirjutada GDB ja käsk, et me tahame siluda. 119 00:06:35,370 --> 00:06:37,550 Sel juhul loota. 120 00:06:37,550 --> 00:06:41,650 Nüüd sel juhul me näeme, et see toob meid kiiret mis ütleb GDB. 121 00:06:41,650 --> 00:06:44,020 Ja me saame tegelikult täita käske GDB 122 00:06:44,020 --> 00:06:48,260 tegelikult algab täitmist Programm, lõpetage see teatud punktides, 123 00:06:48,260 --> 00:06:51,060 hinnata muutujate ja kontrollida muutujaid 124 00:06:51,060 --> 00:06:54,152 olemas programm riigi sel konkreetsel hetkel, 125 00:06:54,152 --> 00:06:55,110 ja nii edasi ja nii edasi. 126 00:06:55,110 --> 00:06:57,240 See annab palju jõudu meile. 127 00:06:57,240 --> 00:06:59,960 >> Aga see lihtsalt nii juhtub et CS50 IDE ka 128 00:06:59,960 --> 00:07:05,870 annab GUI või kasutajanime liides GDB, et 129 00:07:05,870 --> 00:07:11,120 võimaldab meil seda teha ilma käsurida üldse 130 00:07:11,120 --> 00:07:13,560 või üldse isegi. 131 00:07:13,560 --> 00:07:16,930 Nii, et ma pääseb, et on kasutada siluda nuppu 132 00:07:16,930 --> 00:07:20,120 tipus on CS50 IDE. 133 00:07:20,120 --> 00:07:24,280 Nüüd minevikus, mis meil on näinud, et me kasutame käsku 134 00:07:24,280 --> 00:07:27,660 line kompileerida ja seejärel käivitage programm. 135 00:07:27,660 --> 00:07:29,790 >> Debug nupp teeb need mõlemad etapid. 136 00:07:29,790 --> 00:07:34,380 Aga see ka avab siluri tab paremas servas 137 00:07:34,380 --> 00:07:38,280 mis võimaldab meil kontrollida erinevaid Kinnistute programmi 138 00:07:38,280 --> 00:07:40,500 nagu see on täidesaatva. 139 00:07:40,500 --> 00:07:44,280 Kui ma vajutan siluda, selles juhul avab 140 00:07:44,280 --> 00:07:48,230 uue kaardi konsool akna alumises servas. 141 00:07:48,230 --> 00:07:51,160 >> Ja te näete, et see sakk on mõningaid andmeid tipus. 142 00:07:51,160 --> 00:07:52,670 Ja me saame suuresti eirata seda. 143 00:07:52,670 --> 00:07:54,800 Aga üks asi, et me tahame märgata 144 00:07:54,800 --> 00:07:57,170 on, et see väljastab sama asi, et me 145 00:07:57,170 --> 00:08:03,000 saaksin, kui üritasime käivitada omale C programmi terminali aknas. 146 00:08:03,000 --> 00:08:06,230 >> Siin näeme, see töötab rõkkama, ja see on erinevaid lipud, 147 00:08:06,230 --> 00:08:12,660 ja see on koostamas meie count.c faili mis oli valitud tab ajal 148 00:08:12,660 --> 00:08:15,100 et ma tabanud siluda. 149 00:08:15,100 --> 00:08:18,010 Nii et see on väga kasulik, sest nüüd kasutavad seda siluda nuppu, 150 00:08:18,010 --> 00:08:23,280 saame korraga koostada ja seejärel täita programmi, et me tegelikult 151 00:08:23,280 --> 00:08:24,460 taha joosta. 152 00:08:24,460 --> 00:08:27,880 >> Üks lipud mis on üle oluline, sel juhul 153 00:08:27,880 --> 00:08:30,190 oleme tegelikult kasutanud kõige kauem 154 00:08:30,190 --> 00:08:32,450 aga ka lihtsalt tegin mõned käsi lehvitades [kuuldamatu], mis 155 00:08:32,450 --> 00:08:33,820 on see üks siin. 156 00:08:33,820 --> 00:08:35,790 In rõkkama, ta ütleb -ggdb3. 157 00:08:35,790 --> 00:08:38,570 158 00:08:38,570 --> 00:08:41,250 Sel juhul me oleme räägib rõkkama, meie koostaja, 159 00:08:41,250 --> 00:08:43,820 on see, et me tahame koostada meie programmi. 160 00:08:43,820 --> 00:08:46,810 Aga ka see, mis on nimetatakse sümbolit info 161 00:08:46,810 --> 00:08:50,940 nii, et kompilaator tegelikult on juurdepääs to palju alusteabel 162 00:08:50,940 --> 00:08:52,610 sisalduva programmi raames. 163 00:08:52,610 --> 00:08:55,260 >> Täpsemalt arvu funktsioone, mis mul on, 164 00:08:55,260 --> 00:08:58,000 isikute nimed funktsioone, muutujate tüübid 165 00:08:58,000 --> 00:09:01,730 et need muutujad, ja erinevaid muid asju, et aidata siluri 166 00:09:01,730 --> 00:09:04,350 täita oma tööd. 167 00:09:04,350 --> 00:09:06,600 Nüüd on midagi muud see on oluline märkida, 168 00:09:06,600 --> 00:09:10,280 Kui me arutame jooksvaid programmi sel viisil. 169 00:09:10,280 --> 00:09:13,660 >> Pange tähele, et see on tegelikult üles kasvanud uus tab meie konsool 170 00:09:13,660 --> 00:09:14,780 allosas. 171 00:09:14,780 --> 00:09:18,600 Me ei pea enam suhelda otse terminali aknas. 172 00:09:18,600 --> 00:09:21,420 Aga see uus kaart tegelikult terminali aknas. 173 00:09:21,420 --> 00:09:26,710 See lihtsalt on spetsiifiline jooksmine programmi, et oleme loonud. 174 00:09:26,710 --> 00:09:29,270 >> Pange tähele, et allosas, in koos mõnede väljund 175 00:09:29,270 --> 00:09:33,500 poolt kolisevad koostaja ja GDB, mida saame suuresti tähelepanuta, 176 00:09:33,500 --> 00:09:37,570 see tegelikult näitab väljundi Meie programm on väga alt. 177 00:09:37,570 --> 00:09:41,240 Nüüd on oluline mõista et see üks aken tegelikult 178 00:09:41,240 --> 00:09:43,360 näitan sulle väljund oma programmi 179 00:09:43,360 --> 00:09:47,190 vaid ka nõus sisend kõnealuse programmi, samuti. 180 00:09:47,190 --> 00:09:49,260 >> Nii teate, mis ütleb, sisestage number, 181 00:09:49,260 --> 00:09:53,050 mis on sama tulemuse, et meil oli oli terminali aknas varem. 182 00:09:53,050 --> 00:09:55,510 Aga see on nüüd toodud selle uue kaardi. 183 00:09:55,510 --> 00:09:56,550 Ma ei saa sisestada number. 184 00:09:56,550 --> 00:10:00,900 Ja see tegelikult funktsiooni ootame 185 00:10:00,900 --> 00:10:05,890 näitab meile meie siluda, väljund, väljund, mis võiks olla bagi, 186 00:10:05,890 --> 00:10:07,010 nagu me oleme näinud. 187 00:10:07,010 --> 00:10:10,460 Ja väga põhjas, seda tegelikult on mõningaid täiendavaid väljund 188 00:10:10,460 --> 00:10:14,550 SKPst lihtsalt öelda, et see programm on lõpetatud. 189 00:10:14,550 --> 00:10:16,655 >> Nüüd, kui nägid selles eriti joosta, 190 00:10:16,655 --> 00:10:19,370 see ei olnud eriti kasulik, sest isegi 191 00:10:19,370 --> 00:10:23,740 kuigi meil oli siluri menu tulla up, see oli ikka töötava programmi. 192 00:10:23,740 --> 00:10:26,790 Kell tal ei ole tegelikult peatada täitmise meile 193 00:10:26,790 --> 00:10:30,767 saaks kontrollida kõiki muutujate sisalduvad. 194 00:10:30,767 --> 00:10:32,850 Seal on midagi muud et me peame tegema, et 195 00:10:32,850 --> 00:10:36,910 saada GDB tunnistama, et me tahame peatada programmi täitmiseks 196 00:10:36,910 --> 00:10:42,820 ja mitte ainult et ta saaks jätkata Tavaliselt, kui me oleks muul juhul. 197 00:10:42,820 --> 00:10:45,530 >> Selleks, et peatada täitmise, mingil konkreetsel liinil, 198 00:10:45,530 --> 00:10:47,830 meil on vaja luua, mis on nimetatakse murdepunkt. 199 00:10:47,830 --> 00:10:52,670 Ja murdepunkt on väga lihtne luua Selles CS50 IDE võttes hiirt 200 00:10:52,670 --> 00:10:57,090 ja klikkides vasakule Mõne konkreetse liini number. 201 00:10:57,090 --> 00:10:59,920 Kui ma seda teen, punane täpp näib, mis näitab 202 00:10:59,920 --> 00:11:02,300 et see rida on nüüd murdepunkt. 203 00:11:02,300 --> 00:11:07,540 >> Ja järgmine kord, kui ma saan GDB, siis peatub täitmise ajal, et murdepunkt 204 00:11:07,540 --> 00:11:10,280 kui see jõuab, et rida koodi. 205 00:11:10,280 --> 00:11:12,230 Nüüd on see oluline asi realiseerida 206 00:11:12,230 --> 00:11:16,140 et see ei pruugi juhul, et iga koodirida 207 00:11:16,140 --> 00:11:17,880 on tegelikult kättesaadav. 208 00:11:17,880 --> 00:11:23,780 Kui ma oleksin luua funktsiooni siin, et example-- tühine f-- 209 00:11:23,780 --> 00:11:31,230 ja lihtsalt ei print line siin-- hello world-- kui ma ei helista seda funktsiooni, 210 00:11:31,230 --> 00:11:34,770 see saab olema nii, et kui ma panen murdepunkt siin 211 00:11:34,770 --> 00:11:36,220 funktsiooni ei saa kunagi kutsutud. 212 00:11:36,220 --> 00:11:38,310 Ja seetõttu käesoleva Eelkõige murdepunkti 213 00:11:38,310 --> 00:11:43,040 kunagi tegelikult peatada programmi täitmiseks. 214 00:11:43,040 --> 00:11:48,020 >> Ütleme, et ma õigesti luua murdepunkt mõned koodirida 215 00:11:48,020 --> 00:11:50,340 mis tegelikult toimub. 216 00:11:50,340 --> 00:11:53,470 Nüüd sel juhul, see on Esimene rida põhiülesanne. 217 00:11:53,470 --> 00:11:56,630 Nii et see on kindlasti tegemist et niipea kui ma hakkan täitmist, 218 00:11:56,630 --> 00:11:58,580 kõige esimene rida jõutakse. 219 00:11:58,580 --> 00:12:00,230 GDB peatub täitmist. 220 00:12:00,230 --> 00:12:04,100 Ja siis ma saaks suhelda siluri. 221 00:12:04,100 --> 00:12:08,480 >> Võimalik on määrata mitu read murdepunktid, kui soovite. 222 00:12:08,480 --> 00:12:11,365 Me võime ka luua rida up siin selles segmendis koodi 223 00:12:11,365 --> 00:12:12,490 et ei saa kunagi jõudnud. 224 00:12:12,490 --> 00:12:14,744 Ja meil on võimalik määrata üks allpool. 225 00:12:14,744 --> 00:12:16,660 Põhjusel, et meil oleks tahad seda teha jagame 226 00:12:16,660 --> 00:12:19,119 läheb natuke rohkem üksikasjalikult hetk. 227 00:12:19,119 --> 00:12:21,660 Nii nüüd, las ma lihtsalt keelata Nende täiendavate murda punkte 228 00:12:21,660 --> 00:12:24,940 nii et saame vaadata, mis juhtub kui mul on üks vaheaeg 229 00:12:24,940 --> 00:12:27,650 Punkti minu programm. 230 00:12:27,650 --> 00:12:29,410 Olen teinud mõned muudatusi selles programmis. 231 00:12:29,410 --> 00:12:30,750 Nii et ma pean seda salvestada. 232 00:12:30,750 --> 00:12:34,490 Ma klõpsake siluda, nii et ma ei saa algab koostamise ja seejärel 233 00:12:34,490 --> 00:12:36,880 täitmise siluri. 234 00:12:36,880 --> 00:12:40,632 >> Me näeme, et pärast hetkedel line, et me valitud murda 235 00:12:40,632 --> 00:12:43,360 punkt kollase värviga. 236 00:12:43,360 --> 00:12:47,440 Samuti on märgatav, et Ülemises paremas silumist paneel 237 00:12:47,440 --> 00:12:50,940 et pausiikooni on muutunud väikesesse mängu ikooni. 238 00:12:50,940 --> 00:12:54,710 See tähendab, et meil paus täitmise, see on konkreetsel juhul. 239 00:12:54,710 --> 00:12:57,840 Ja lööb Play nuppu oleks võimaldab meil jätkata täitmist 240 00:12:57,840 --> 00:13:00,000 tollel kindlal hetkel. 241 00:13:00,000 --> 00:13:03,240 >> Pange tähele, et seal on paar muud nupud selles siluda paneel, 242 00:13:03,240 --> 00:13:04,220 samuti. 243 00:13:04,220 --> 00:13:09,470 Samm üle, mis võimaldab mul täita, et üks rida koodi 244 00:13:09,470 --> 00:13:14,030 ja astuda üle, et liini kõrval üks, mis käesoleval juhul 245 00:13:14,030 --> 00:13:17,060 tähendaks, et printf avaldus täidetakse. 246 00:13:17,060 --> 00:13:22,310 Ja on siis pausi täitmise kohta line 13 nagu nii. 247 00:13:22,310 --> 00:13:25,090 >> Ja seal on ka samm funktsionaalsusest, mis 248 00:13:25,090 --> 00:13:28,950 on kasulik, kui olen loonud muu funktsioonid mujal lähtekoodi. 249 00:13:28,950 --> 00:13:31,420 Ja ma tahan astuda neid funktsioone mitte 250 00:13:31,420 --> 00:13:33,050 täidab seda ülesannet tervikuna. 251 00:13:33,050 --> 00:13:37,279 Aga me vaatame rohkem etapis funktsionaalsusest vaid hetk. 252 00:13:37,279 --> 00:13:40,320 Nüüd märgata teisi asju, mis tegelikult olemas selle siluda paneeli. 253 00:13:40,320 --> 00:13:44,110 >> Meil on selle paneeli kutsutud pinu, mis näitab meile 254 00:13:44,110 --> 00:13:45,300 kus täpselt oleme. 255 00:13:45,300 --> 00:13:48,550 Sel juhul oleme sees peaülesandest. 256 00:13:48,550 --> 00:13:50,880 Meie script nimetatakse count.c. 257 00:13:50,880 --> 00:13:53,820 Ja meil juhtub olema line 13, veerg üks, mis 258 00:13:53,820 --> 00:13:58,950 Just seda rõhutas piirkonnas lähtekoodi näitab, kui hästi. 259 00:13:58,950 --> 00:14:02,435 >> Nüüd märkate, et see näitab ka all kohaliku muutuja osa 260 00:14:02,435 --> 00:14:06,710 kõik muutujad, mis eksisteerivad selle funktsiooni. 261 00:14:06,710 --> 00:14:08,930 Oluline on tähele et kõik muutujad 262 00:14:08,930 --> 00:14:12,580 Siia ilmuvad kohaliku muutuja rubriigist funktsioon, 263 00:14:12,580 --> 00:14:14,380 juba enne nende määratletud. 264 00:14:14,380 --> 00:14:19,160 Me näeme siin, et meil on muutuv nimetatakse num, on vaikimisi väärtus 0, 265 00:14:19,160 --> 00:14:21,280 ja see on tüüpi int. 266 00:14:21,280 --> 00:14:24,110 >> Nüüd, enne kui me tegelikult initsialiseerida kõiki neid muutujaid, 267 00:14:24,110 --> 00:14:26,685 me ei ole tingimata tagatud, et näha väärtus 0. 268 00:14:26,685 --> 00:14:29,200 Ja sõltuvalt teiste hukkamiste et olete läbi 269 00:14:29,200 --> 00:14:32,020 ja riigi oma mälu, kui sa tegelikult programmi käivitada, 270 00:14:32,020 --> 00:14:34,605 te võite leida, et teil ei näe väärtused 0 271 00:14:34,605 --> 00:14:36,550 ja selle asemel mõni muu hull numbrid. 272 00:14:36,550 --> 00:14:38,390 >> Aga ei muretse. 273 00:14:38,390 --> 00:14:44,610 Ta ei kavatse olla olulised kuni sa tegelikult initsialiseerida väärtus. 274 00:14:44,610 --> 00:14:49,630 Nüüd sel juhul näeme, et Olen läbi mõned väljundid. 275 00:14:49,630 --> 00:14:52,131 Ja ma just nüüd, peatatud täitmise. 276 00:14:52,131 --> 00:14:53,880 Aga sel juhul, mida Ma tõesti tahan teha 277 00:14:53,880 --> 00:14:58,060 on nüüd samm üle selle joone koodi, nii et ma ei saa tegelikult 278 00:14:58,060 --> 00:15:04,390 päringu kasutaja, et int, et tahame kasutada oma programmi. 279 00:15:04,390 --> 00:15:07,060 >> Nüüd sel juhul, kui I hit samm üle, teate 280 00:15:07,060 --> 00:15:11,940 et Paus või pigem Jätka nupp on muutunud selle pausinupp 281 00:15:11,940 --> 00:15:14,022 sest see kood on tegelikult täidetakse. 282 00:15:14,022 --> 00:15:15,730 Mis toimub just praegu on see 283 00:15:15,730 --> 00:15:21,630 ootab meid sisestada mõned andmed nagu näeme meie väljundi teksti 284 00:15:21,630 --> 00:15:23,600 väga põhjas. 285 00:15:23,600 --> 00:15:25,787 >> Nii kohe, et see on tegelikult ei peatatud 286 00:15:25,787 --> 00:15:28,620 kuigi see, omamoodi, ilmub olla, sest ei juhtu midagi. 287 00:15:28,620 --> 00:15:32,360 Aga see lihtsalt nii juhtub, et minu konkreetsel juhul on line 13 288 00:15:32,360 --> 00:15:34,210 Ma ootan kasutaja sisend. 289 00:15:34,210 --> 00:15:39,130 Ja nii GDB ei ole võimalik kontrollida programmi, sest see töötab. 290 00:15:39,130 --> 00:15:43,370 >> Nüüd järgmine kord, et ma sisestan mõned input-- nii et ma sisestage et number 5, 291 00:15:43,370 --> 00:15:46,140 nagu me oleme näinud past-- tabas Return, ja me 292 00:15:46,140 --> 00:15:51,430 märkate, et kohe, GDB pausid ja jälle esile järgmisele reale. 293 00:15:51,430 --> 00:15:55,320 Aga teate, et nüüd, kui Tänu meie sisestanud väärtus, 294 00:15:55,320 --> 00:15:58,930 oleme uuendanud, et väärtus sees Meie kohalikud muutujad, mis 295 00:15:58,930 --> 00:16:05,560 Väga kasulik on täpselt teada mida see number oli mälu. 296 00:16:05,560 --> 00:16:10,650 >> Nüüd ma ei luba seda programmi jätkata mängivad lõpuni selle täitmine 297 00:16:10,650 --> 00:16:12,570 pihta Jätka. 298 00:16:12,570 --> 00:16:16,410 Me näeme, et väga kiiresti teeb programmi lõpuni täidesaatva 299 00:16:16,410 --> 00:16:19,790 sama väljundi et me oli enne, siluri sulgub, 300 00:16:19,790 --> 00:16:23,170 ja nüüd on see programm täielikult seiskunud. 301 00:16:23,170 --> 00:16:25,320 >> I näitavad, et ainult eesmärgil nähes, mida 302 00:16:25,320 --> 00:16:27,280 juhtub, kui me tegelikult tabas Jätka. 303 00:16:27,280 --> 00:16:30,640 Aga me tegelikult tahame tahan minna tagasi selle programmi 304 00:16:30,640 --> 00:16:33,820 nii et saame proovida siluda täpselt, mis toimub. 305 00:16:33,820 --> 00:16:37,980 Nüüd, kui ma kasutan siluri, tohib ei pea neid siluda printf avaldused. 306 00:16:37,980 --> 00:16:43,860 >> Nii et ma võiks need eemaldada Ma teen nüüd lihtsalt minna tagasi meie lihtsam koodi 307 00:16:43,860 --> 00:16:45,950 et meil oli hetk tagasi. 308 00:16:45,950 --> 00:16:48,790 Nüüd, kui ma päästa programmeerida ja käivitada, 309 00:16:48,790 --> 00:16:53,700 see jälle minna, et esialgse murdepunkti, et mul oli real 11. 310 00:16:53,700 --> 00:16:57,700 Ja ma saaks kontrollida minu muutujad nagu ma tahan teha. 311 00:16:57,700 --> 00:17:00,695 >> See lihtsalt nii juhtub, et see osa ei ole väga huvitav, 312 00:17:00,695 --> 00:17:04,364 Ja ma tean, et ma lähen välja trükkida seda avaldust. 313 00:17:04,364 --> 00:17:05,280 Palun sisestage number. 314 00:17:05,280 --> 00:17:08,099 Ja siis ma tean, et ma lähen küsida kasutajalt, et täisarv. 315 00:17:08,099 --> 00:17:13,329 Nii et ehk ma tegelikult tahan liikuda minu murdepunkti natuke allpool. 316 00:17:13,329 --> 00:17:16,710 >> Saate eemaldada murda punkte klõpsates jälle otse 317 00:17:16,710 --> 00:17:18,460 vasakule, et liin number. 318 00:17:18,460 --> 00:17:22,200 See punane täpp kaob, näidates et see murdepunkt on nüüd läinud. 319 00:17:22,200 --> 00:17:24,780 Nüüd sel juhul, täitmine on peatatud. 320 00:17:24,780 --> 00:17:27,770 Ja nii see ei ole tegelikult läheb jätkata nii et konkreetsel juhul. 321 00:17:27,770 --> 00:17:30,210 Aga ma ei saa määrata pausi punkt a little bit hiljem. 322 00:17:30,210 --> 00:17:33,880 >> Ja kui ma nüüd taas minu kood, see jätkub ja öelda 323 00:17:33,880 --> 00:17:36,190 punkt, et murdepunkt. 324 00:17:36,190 --> 00:17:37,374 Jällegi, ma tabanud Jätka. 325 00:17:37,374 --> 00:17:39,040 Ei tundu nagu midagi juhtub. 326 00:17:39,040 --> 00:17:41,450 Aga see on sellepärast, et minu kood ootab sisend. 327 00:17:41,450 --> 00:17:47,900 Ma sisestage number 5, Enter, ja nüüd järgmise murdepunkti tabavad. 328 00:17:47,900 --> 00:17:50,570 >> Nüüd sel juhul käesoleva on rida koodi 329 00:17:50,570 --> 00:17:53,820 et enne teadsime juhtus olema lollakas. 330 00:17:53,820 --> 00:17:57,590 Nii saab hinnata, mis juhtub sel konkreetsel ajahetkel. 331 00:17:57,590 --> 00:18:02,620 Kui liin on esile tõstetud, seda line ei ole veel täidetud. 332 00:18:02,620 --> 00:18:06,490 Nii et kui näeme et mul on number, mis 333 00:18:06,490 --> 00:18:11,610 Mul on täisarv nimega num, et väärtus on 5. 334 00:18:11,610 --> 00:18:15,090 Ja ma lähen esituses matemaatikat kohta, et number. 335 00:18:15,090 --> 00:18:20,130 >> Kui ma sammu üle, et saame märgata, et väärtus num 336 00:18:20,130 --> 00:18:23,780 on muutunud vastavalt aritmeetika, et me oleme tegelikult teinud. 337 00:18:23,780 --> 00:18:26,810 Ja nüüd, et me oleme sees see silmus 338 00:18:26,810 --> 00:18:29,090 või nüüd, et silmus ise on rõhutanud, 339 00:18:29,090 --> 00:18:32,450 näeme, et meil on uus muutuja nimega i, et 340 00:18:32,450 --> 00:18:35,370 läheb tohi kasutada, et loop. 341 00:18:35,370 --> 00:18:38,230 >> Nüüd mäletan enne, et ma mainis, et mõnikord sa oled 342 00:18:38,230 --> 00:18:43,470 näeme mingi hull numbrid vaikimisi enne, et number 343 00:18:43,470 --> 00:18:45,530 või et muutuja tegelikult vormindatud. 344 00:18:45,530 --> 00:18:49,040 Näeme, et täpselt siin see muutuja 345 00:18:49,040 --> 00:18:51,345 nimetatakse i, mis ei ole veel lähtestatud 346 00:18:51,345 --> 00:18:53,560 ajal esile. 347 00:18:53,560 --> 00:18:57,070 Aga näeme, et see on mingi number et me tegelikult ei oodanud. 348 00:18:57,070 --> 00:18:57,620 >> See on OK. 349 00:18:57,620 --> 00:18:59,661 Ära muretse selle pärast sest meil ei ole tegelikult 350 00:18:59,661 --> 00:19:04,970 vormindatud, et number, kuni ma samm üle selle joone ja väärtust 351 00:19:04,970 --> 00:19:08,560 i on vormindatud väärtusega 1. 352 00:19:08,560 --> 00:19:11,400 Nii, et näha, et see on tegelikult Juhul, olgem samm üle. 353 00:19:11,400 --> 00:19:14,420 Nüüd on võimalik näha, et line on täidetud. 354 00:19:14,420 --> 00:19:17,000 Ja meil on nüüd esile Selle printf line. 355 00:19:17,000 --> 00:19:22,230 >> Ja me võime nüüd näha, kuidas meie väärtused I ja 3 on aja jooksul muutunud. 356 00:19:22,230 --> 00:19:26,450 See on väga kasulik teha, tegelikult, on samm üle joonte korduvalt. 357 00:19:26,450 --> 00:19:30,480 Ja leiad, mida tegelikult juhtub sees oma silmus 358 00:19:30,480 --> 00:19:33,660 ja mis juhtub muutujad sees, et loop 359 00:19:33,660 --> 00:19:39,200 nagu, et programmi rakendamise esineb üks samm korraga. 360 00:19:39,200 --> 00:19:41,110 >> Nüüd on see aeg, mil ma astus üle lihtsalt piisavalt 361 00:19:41,110 --> 00:19:44,210 et ma nüüd olen lõpuks oma programmi. 362 00:19:44,210 --> 00:19:46,980 Kui ma sammu üle, et see tegelikult lõpetada täitmist 363 00:19:46,980 --> 00:19:48,860 Nagu me oleme näinud varem. 364 00:19:48,860 --> 00:19:52,110 Lubage mul see taaskäivitada, veel kord, et et võin juhtida midagi muud välja, 365 00:19:52,110 --> 00:19:53,320 samuti. 366 00:19:53,320 --> 00:19:55,350 >> Sel juhul on nüüd minult taas 367 00:19:55,350 --> 00:19:57,100 võtta vastu number, mille Ma jällegi siseneda. 368 00:19:57,100 --> 00:20:00,300 Aga seekord, ma lähen sisestada suurema arvu nii, et silmus 369 00:20:00,300 --> 00:20:02,540 itereerima rohkem korda. 370 00:20:02,540 --> 00:20:06,090 Sel juhul ma lähen sisestada väärtus 11. 371 00:20:06,090 --> 00:20:08,390 >> Nüüd jälle, sest ma seada murdepunkt real 15, 372 00:20:08,390 --> 00:20:10,490 see saab rõhutada, et liin. 373 00:20:10,490 --> 00:20:12,980 Me näeme, et meie number 11 on õigesti 374 00:20:12,980 --> 00:20:15,560 esindatud meie kohalikud muutujad. 375 00:20:15,560 --> 00:20:22,460 Astudes üle, et saame nüüd vaata, mis juhtub meie väärtus i 376 00:20:22,460 --> 00:20:25,680 kui astume sees selle jaoks silmus. 377 00:20:25,680 --> 00:20:31,960 Läheb suurendatakse iga kord, kui me jõuda tippu, et loop. 378 00:20:31,960 --> 00:20:35,110 >> Nüüd üks asi, mis võiks kasulik teha täitmise ajal 379 00:20:35,110 --> 00:20:40,490 Käesoleva programmi eesmärk on minu jaoks tegelikult muuta muutujate midstream näha 380 00:20:40,490 --> 00:20:42,450 Mis juhtub minu programm. 381 00:20:42,450 --> 00:20:46,540 Sel juhul ma ei saa tegelikult topeltklõps väärtus. 382 00:20:46,540 --> 00:20:48,040 Pange tähele, et see muutub tekstiväljale. 383 00:20:48,040 --> 00:20:50,280 >> Nüüd ma saan sisestada erinevat Väärtustame kokku 384 00:20:50,280 --> 00:20:55,700 näha, kuidas minu programm käitub kui ma olen muutunud, et muutuja. 385 00:20:55,700 --> 00:20:59,560 Nüüd sel juhul muutuja Nüüd sisaldab väärtust 10. 386 00:20:59,560 --> 00:21:02,810 Aga programm on veel peatatud sundtäitmist. 387 00:21:02,810 --> 00:21:07,610 Kui ma sammu üle, ma näen, et väärtus i, mis ma Sisestatud 10, 388 00:21:07,610 --> 00:21:12,170 ei ole suurem kui väärtus num, mis kohe paneb silmus 389 00:21:12,170 --> 00:21:14,240 peatada täidesaatva. 390 00:21:14,240 --> 00:21:16,210 >> Nüüd see ei ole ainult Põhjus, miks te oleks 391 00:21:16,210 --> 00:21:19,450 soovid muuta muutuja paigas. 392 00:21:19,450 --> 00:21:22,210 Sa võid tegelikult tahavad proovida muuta seda nii, 393 00:21:22,210 --> 00:21:24,590 et saate jätkata täitmise loop 394 00:21:24,590 --> 00:21:27,370 või nii, et saate muuta mingi väärtus enne seda 395 00:21:27,370 --> 00:21:32,630 jõuab mõne konkreetse komplekti aritmeetiline et te asute täitma. 396 00:21:32,630 --> 00:21:36,210 >> Nüüd, et me tegelikult muuta väärtus i kui programm täidesaatva, 397 00:21:36,210 --> 00:21:39,540 see põhjustas silmus loobuda enneaegselt, sest äkki ma 398 00:21:39,540 --> 00:21:42,770 juhtus olema suurem kui väärtus NUM, mis tähendab, et see silmus 399 00:21:42,770 --> 00:21:45,410 enam ei vajata, mis tuleb täita. 400 00:21:45,410 --> 00:21:48,780 Peale selle juhtus olema Juhul, kui oleme muutnud väärtus i 401 00:21:48,780 --> 00:21:53,270 kui liin 17 on rõhutatud, mis oli hetk, 402 00:21:53,270 --> 00:21:56,280 et silmus täitmine tegelikult hinnatakse. 403 00:21:56,280 --> 00:22:00,210 >> Kui ma oleksin muutunud väärtus i teisel real, ütleme 19, 404 00:22:00,210 --> 00:22:03,360 oleksime näinud erinevat käitumist, sest line 19 oleks 405 00:22:03,360 --> 00:22:08,310 on teostatud enne loop tingimus oli ümber hinnata. 406 00:22:08,310 --> 00:22:11,900 Nüüd on see aeg, mil ma olen jälle lõpus see programm. 407 00:22:11,900 --> 00:22:15,707 Ja ma ei saa lubada seda, et jätkata võimaldab oma programmi sulgumise loomulikult. 408 00:22:15,707 --> 00:22:18,290 Aga seal on paar asja mis on oluline ära võtta 409 00:22:18,290 --> 00:22:19,960 just selle arutelu. 410 00:22:19,960 --> 00:22:22,490 Sa pead hindama oma eeldusi 411 00:22:22,490 --> 00:22:24,710 kuidas kood tuleks käitub. 412 00:22:24,710 --> 00:22:28,220 Iga kord, kui arvad, et mõni tükk koodi tead juhtub tööd, 413 00:22:28,220 --> 00:22:30,940 mis võib olla punane lipp minna tagasi ja hinnata, ja olla kindel, 414 00:22:30,940 --> 00:22:33,470 et teie eeldus kuidas see kood töötab 415 00:22:33,470 --> 00:22:38,290 on tegelikult tõsi, et kuidas see on väljendas oma lähtekoodi. 416 00:22:38,290 --> 00:22:41,300 >> Kuid veelgi punkti oli, Kui me kasutame siluri, 417 00:22:41,300 --> 00:22:43,920 võite panna katkestuspunktid erinevat rida koodi, 418 00:22:43,920 --> 00:22:48,110 mis paneb siluri peatada täitmise igas need read 419 00:22:48,110 --> 00:22:52,210 nii, et saate hinnata mälu või isegi muuta see koht. 420 00:22:52,210 --> 00:22:55,630 Ja jälle, pea meeles, et saate luua mitu murdepunktid, et sa 421 00:22:55,630 --> 00:23:00,390 saab ka jätkata täitmist, jätke suurtel koodiosade, 422 00:23:00,390 --> 00:23:04,790 ja siis see automaatselt peatada järgmisel murdepunkti. 423 00:23:04,790 --> 00:23:07,760 >> Seal on tegelikult rohkem arenenud funktsioone siluri, samuti. 424 00:23:07,760 --> 00:23:10,170 Aga me peame teid suunata et mõnes järgnevas videos 425 00:23:10,170 --> 00:23:14,090 et tõesti tease peale, kuidas kasutada neid konkreetseid ülesandeid. 426 00:23:14,090 --> 00:23:15,990 Sest nüüd, aitäh väga palju vaadates. 427 00:23:15,990 --> 00:23:18,080 Ja õnne silumine.