1 00:00:00,000 --> 00:00:00,309 2 00:00:00,309 --> 00:00:02,350 [? DAN ARMADARAS:?] Hi, Ako [? Dan Armadaras?]. 3 00:00:02,350 --> 00:00:04,410 Ngayon, kami ay pagpunta sa ay naghahanap sa pag-debug. 4 00:00:04,410 --> 00:00:06,697 Hindi lamang namin ay pagpunta sa makipag-usap tungkol sa ilang mga pamamaraan, 5 00:00:06,697 --> 00:00:09,280 kundi pati na rin kami ay pagpunta sa tumingin sa ilan sa mga tampok na nakapaloob 6 00:00:09,280 --> 00:00:14,170 sa loob ng CS50 IDE na payagan sa iyo upang madali debug ng isang program. 7 00:00:14,170 --> 00:00:16,272 >> Isa lamang halimbawa ng isang bagay na maaaring maging mali 8 00:00:16,272 --> 00:00:18,730 at ito ay talagang isang bagay na na namin nakita bago. 9 00:00:18,730 --> 00:00:23,200 Sa kasong ito, ito ay isang programa C na tumatanggap ng isang integer mula sa user, 10 00:00:23,200 --> 00:00:27,580 hinahati nito sa pamamagitan ng dalawang, at nagbibigay ng ang output bumalik sa user. 11 00:00:27,580 --> 00:00:30,610 Ngayon mula sa kung ano ang iyong nakita namin mas maaga sa aralin, 12 00:00:30,610 --> 00:00:34,370 Alam namin na ito ay talagang maging sanhi ng tiyak na mga uri ng mga problema sa division 13 00:00:34,370 --> 00:00:35,860 kapag kami ay may kakaibang mga numero. 14 00:00:35,860 --> 00:00:40,330 >> Partikular, kami na lang itapon kahit na ano pagkatapos ng decimal point. 15 00:00:40,330 --> 00:00:43,170 Ngayon, alam namin na ito ang mangyayari sa maging ang kaso. 16 00:00:43,170 --> 00:00:47,430 At kung tumakbo namin ito, maaari naming kumpirmahin ang aming hinala, una, sa pamamagitan ng pag-ipon. 17 00:00:47,430 --> 00:00:50,460 At pagkatapos, sa pamamagitan ng pagpapatakbo at pagpasok ng isang kakaibang number. 18 00:00:50,460 --> 00:00:51,720 >> Ito ay walang bagong. 19 00:00:51,720 --> 00:00:54,490 Ngunit ito ay talagang isang halimbawa ng isang bug na 20 00:00:54,490 --> 00:00:58,810 maaaring umiiral sa loob ng isang mas malaking programa na nagiging mas mahirap na subaybayan down. 21 00:00:58,810 --> 00:01:02,640 Kahit na alam namin kung ano ang isyu ay, ang tunay na puno ng problema 22 00:01:02,640 --> 00:01:06,250 maaaring sinusubukan upang makilala ang partikular na kung saan nangyari ang error, 23 00:01:06,250 --> 00:01:09,750 pagkilala kung ano na ang problema ay, at pagkatapos ay pag-aayos nito. 24 00:01:09,750 --> 00:01:14,400 Kaya nagbibigay ito bilang isang halimbawa ng kung ano ang maaaring maging isang bagay 25 00:01:14,400 --> 00:01:19,030 na namin na malaman ngunit maaaring inilibing sa loob ng iba pang mga elemento ng code. 26 00:01:19,030 --> 00:01:23,090 >> Kaya pagbubukas na ito ng iba pang mapagkukunan code file bilang isang halimbawa, 27 00:01:23,090 --> 00:01:27,165 ang problemang ito division ngayon bahagi ng isang mas malaking programa. 28 00:01:27,165 --> 00:01:29,040 Maaari pa rin ng isang maliit na bit contrived, at kami 29 00:01:29,040 --> 00:01:31,076 Maaari mong ma-madali kilalanin ito, lalo na 30 00:01:31,076 --> 00:01:32,450 dahil kami ay tatalakayin namin ito lamang. 31 00:01:32,450 --> 00:01:38,250 Ngunit maaari naming malaman na ito maaaring umiiral na problema sa isang mas malaking scale. 32 00:01:38,250 --> 00:01:45,450 >> Kung ako sumulat ng libro na ito at ngayon tumakbo ito, ipasok ang isang kakaibang bilang, 33 00:01:45,450 --> 00:01:49,816 maaari naming makita na hindi kami makakuha ng tumpak ang output na maaari naming magkaroon ng inaasahan. 34 00:01:49,816 --> 00:01:51,690 Sa ganitong kaso, maaari nating sabihin na tayo 35 00:01:51,690 --> 00:01:56,060 nais na bilangin ang lahat ng mga numero mula sa isa hanggang sa ilang mga tiyak na numero. 36 00:01:56,060 --> 00:01:58,130 At maaari naming makita na namin magkaroon ng isang iba't ibang mga isyu 37 00:01:58,130 --> 00:02:03,880 dito kung kami ay outputting, i, 0 at 1 kapag nagbibigay kami ng isang input ng 5. 38 00:02:03,880 --> 00:02:07,380 >> Kaya namin na malaman na may problema dito. 39 00:02:07,380 --> 00:02:11,662 Ngunit hindi pa namin maaaring malaman ang tiyak kung saan ang isyu na ito ang tunay na umiiral. 40 00:02:11,662 --> 00:02:13,620 Ngayon ay isa sa mga paraan na maaari naming subukan upang ayusin ito 41 00:02:13,620 --> 00:02:15,745 ay isang bagay na hindi namin nai-ipinakilala sa. 42 00:02:15,745 --> 00:02:18,880 Maaari naming gamitin lamang ito sa isang mas malaking scale. 43 00:02:18,880 --> 00:02:21,680 >> Sa 14 linya, kami ay ito printf function, 44 00:02:21,680 --> 00:02:25,620 na nagpapahintulot sa amin na i-print out ang estado ng iba't-ibang mga piraso ng impormasyon. 45 00:02:25,620 --> 00:02:28,880 At ito ay isang bagay na ikaw ay dapat pagkilos sa loob ng iyong programa 46 00:02:28,880 --> 00:02:33,100 subukan upang malaman kung eksakto kung ano ang nangyayari sa iba't-ibang linya ng code. 47 00:02:33,100 --> 00:02:36,350 Kaya kahit na hindi ito ang final output na namin ang aktwal na 48 00:02:36,350 --> 00:02:39,830 Gusto upang makabuo sa labas ng ang program na ito, kami pa rin 49 00:02:39,830 --> 00:02:42,300 Maaaring magkaroon ng ilang mga debug pahayag kung saan kami 50 00:02:42,300 --> 00:02:46,970 maaari subukan upang malaman kung ano mismo ang ang nangyayari sa loob ng aming mga code. 51 00:02:46,970 --> 00:02:51,210 >> Kaya sa kasong ito, ang gagawin ko printf may tag debug. 52 00:02:51,210 --> 00:02:53,540 Sa kasong ito, ito ay lamang ng isang debug string 53 00:02:53,540 --> 00:02:56,840 na ako up-paglagay upang ito ay nagiging napakalinaw sa output ng aking code 54 00:02:56,840 --> 00:02:59,200 ano ito ay na gusto kong ipakita. 55 00:02:59,200 --> 00:03:04,410 At output dito ang numero na nakalkula namin. 56 00:03:04,410 --> 00:03:06,800 >> Sa kasong ito, maaari ko nais na malaman ang tiyak 57 00:03:06,800 --> 00:03:11,380 kung ano ang nangyayari bago at makalipas ang ilang tiyak na mga pagtutuos. 58 00:03:11,380 --> 00:03:16,224 Kaya maaari ko bang gamitin ang isang printf bago at matapos na linya ng code. 59 00:03:16,224 --> 00:03:18,640 Sa kasong ito, maaari ko kahit gumawa ito ng isang maliit na piraso ng mas malinaw 60 00:03:18,640 --> 00:03:21,960 sa pamamagitan ng pagsasabi debug bago at debug matapos kaya 61 00:03:21,960 --> 00:03:26,540 na hindi ko lituhin ang aking sarili sa maramihang mga linya na tumingin magkapareho. 62 00:03:26,540 --> 00:03:32,290 >> Ngayon kung recompile namin ito at run ito, ipasok ang isang numero tulad ng limang ulit, 63 00:03:32,290 --> 00:03:35,090 maaari naming makita na mayroon kami ngayon output bago at pagkatapos ng 64 00:03:35,090 --> 00:03:40,670 at natagpuan na hindi namin nagawa ang isang malinaw division o malinaw na ang pagkakaroon ng bilang 65 00:03:40,670 --> 00:03:43,680 na gusto naming aktwal na gawin. 66 00:03:43,680 --> 00:03:48,660 Ngayon sa kasong ito, ito ay hindi talagang isang malinaw na output. 67 00:03:48,660 --> 00:03:52,440 Ito ay hindi talagang isang malinaw na resulta na gusto naming sa labas ng mga ito partikular na programa. 68 00:03:52,440 --> 00:03:54,427 >> At ito ay, muli, isang Medyo contrived. 69 00:03:54,427 --> 00:03:57,510 Ngunit, marahil, ang isa sa mga bagay-bagay na maaari naming gawin kung sinabi ng detalye 70 00:03:57,510 --> 00:04:01,900 na gusto naming hatiin ito sa pamamagitan ng 2 at idagdag 1-- kaya sa ibang salita, 71 00:04:01,900 --> 00:04:04,550 gusto naming isalin up-- pagkatapos maaari naming malaman na maaaring namin 72 00:04:04,550 --> 00:04:08,060 gawin sa partikular na bagay, sa kasong ito. 73 00:04:08,060 --> 00:04:14,010 Ngayon dito ay nalalaman natin na tayo ay magiging magagawang magdagdag ng 1 sa aming halved number. 74 00:04:14,010 --> 00:04:16,490 >> Ni-recompile ito Hayaan at kumpirmahin na ito 75 00:04:16,490 --> 00:04:18,860 ay kumikilos ang paraan na gusto naming. 76 00:04:18,860 --> 00:04:21,980 Maaari naming makita na ngayon bago nagkakaroon, kami ay may mga number 5. 77 00:04:21,980 --> 00:04:26,620 Pagkatapos ng pagkakaroon ng, mayroon kaming mga numero 3, na ayon sa aming mga detalye, 78 00:04:26,620 --> 00:04:29,292 ay kung ano ang gusto naming gawin. 79 00:04:29,292 --> 00:04:31,000 Subalit kung tinitingnan namin ang mga output dito, maaari naming 80 00:04:31,000 --> 00:04:33,760 makita na maaari naming magkaroon ng isa pang bug sa kabuuan, na kung saan ay 81 00:04:33,760 --> 00:04:36,940 na kami ay simula ng aming count mula sa 0. 82 00:04:36,940 --> 00:04:39,390 >> Muli Ngayon, ito ay isang bagay na na namin na nakita sa nakalipas na 83 00:04:39,390 --> 00:04:42,500 at maaari naming ayusin medyo madali. 84 00:04:42,500 --> 00:04:44,790 Ngunit sa kasong ito, kami nagkaroon din ng mga benepisyo 85 00:04:44,790 --> 00:04:48,940 ng paggamit ng printf pahayag nang direkta sa loob ng para sa loop 86 00:04:48,940 --> 00:04:52,930 malaman tiyak kung saan error na nangyari. 87 00:04:52,930 --> 00:04:55,150 Kaya printf pahayag ay lubhang kapaki-pakinabang sa pagtulong sa 88 00:04:55,150 --> 00:04:57,940 matukoy mo kung saan, tiyak sa iyong source code, 89 00:04:57,940 --> 00:05:00,620 ng isang tukoy na error ay nangyari. 90 00:05:00,620 --> 00:05:03,650 >> At ito ay mahalaga din upang mapagtanto na, bilang kami ay sumusulat code, 91 00:05:03,650 --> 00:05:06,052 ay magkaroon tayo ng pagpapalagay tungkol sa estado ng isang programa. 92 00:05:06,052 --> 00:05:08,510 O maaaring mayroon kaming pagpapalagay tungkol sa kung ano ang bahagi ng programa 93 00:05:08,510 --> 00:05:13,020 ay talagang tama o maling pagka sa susunod habang binubuo namin sa programa na 94 00:05:13,020 --> 00:05:15,950 at gawin itong bahagi ng isang masalimuot at mas malaking programa 95 00:05:15,950 --> 00:05:19,700 na napagtanto namin na ang ilang mga aspeto ng mga iyon ay talagang maraming surot. 96 00:05:19,700 --> 00:05:22,680 >> Paggamit ng printf ay maaari talagang tulong paliitin at makilala 97 00:05:22,680 --> 00:05:26,430 mga rehiyon ng isang programa na maaaring hindi ay kumikilos nang eksakto ang paraan na aming 98 00:05:26,430 --> 00:05:29,500 asahan, batay sa aming mga palagay. 99 00:05:29,500 --> 00:05:31,460 Ngunit mayroong iba pang mga tool magagamit, pati na rin, 100 00:05:31,460 --> 00:05:34,860 na nagpapahintulot sa amin upang subukan upang figure kung saan ang isang error ay nangyari 101 00:05:34,860 --> 00:05:39,930 at din, partikular, ang mga bagay na ay nangyayari sa loob ng programa. 102 00:05:39,930 --> 00:05:41,990 >> Kaya gamit printf ay tunay kapaki-pakinabang kapag gusto naming 103 00:05:41,990 --> 00:05:45,900 upang makilala ang mga tiyak na lugar ng isang programa na may ilang mga bug. 104 00:05:45,900 --> 00:05:47,730 Ngunit ito rin ay nagiging nakakapagod pagkatapos ng ilang sandali. 105 00:05:47,730 --> 00:05:50,500 Sa kasong ito, ito ay isang relatibong simpleng programa 106 00:05:50,500 --> 00:05:52,750 may isa o dalawang variable. 107 00:05:52,750 --> 00:05:57,260 At ito ay nagiging tunay madali para sa amin upang i-print ang halaga ng mga variable 108 00:05:57,260 --> 00:05:59,670 sa konteksto ng mas malaking programa. 109 00:05:59,670 --> 00:06:02,670 >> Ngunit kami ay maaaring magkaroon ng iba't-ibang programa na may maraming mga variable. 110 00:06:02,670 --> 00:06:06,530 At ito ay maaaring hindi ganap kaya madaling gamitin printf 111 00:06:06,530 --> 00:06:10,120 subukan upang suriin kung ano ang nangyayari sa bawat isa sa mga variable 112 00:06:10,120 --> 00:06:13,590 bilang ng programa ay Isinasagawa. 113 00:06:13,590 --> 00:06:16,960 May isang programa na umiiral tinatawag na isang program debugger. 114 00:06:16,960 --> 00:06:20,320 Sa kasong ito, ang isa na kami paggamit ay ang debugger GNU, o GDB, 115 00:06:20,320 --> 00:06:24,260 na nagbibigay-daan sa amin upang siyasatin ang mga panloob na mga gawain ng isang programa sa isang mas 116 00:06:24,260 --> 00:06:25,700 detalyadong paraan. 117 00:06:25,700 --> 00:06:28,810 >> Maaari naming talagang execute GDB mula sa command line 118 00:06:28,810 --> 00:06:35,370 dito sa pamamagitan ng simpleng pag-type GDB at ang utos na gusto naming upang i-debug. 119 00:06:35,370 --> 00:06:37,550 Sa kasong ito, count. 120 00:06:37,550 --> 00:06:41,650 Ngayon sa kasong ito, maaari naming makita na ito Dinadala tayo nito sa isang prompt na nagsasabing GDB. 121 00:06:41,650 --> 00:06:44,020 At kami ay maaaring aktwal na isakatuparan ang mga utos sa GDB 122 00:06:44,020 --> 00:06:48,260 na talagang simulan ang pagpapatupad ng mga program, itigil ito sa ilang mga punto, 123 00:06:48,260 --> 00:06:51,060 suriin ang mga variable na ito at siyasatin ang mga variable na 124 00:06:51,060 --> 00:06:54,152 umiiral sa programa ng estado sa partikular na sandali, 125 00:06:54,152 --> 00:06:55,110 at iba pa. 126 00:06:55,110 --> 00:06:57,240 Ito ay nagbibigay ng isang pulutong ng kapangyarihan sa atin. 127 00:06:57,240 --> 00:06:59,960 >> Ngunit kaya ito lang ang mangyayari na ang CS50 IDE din 128 00:06:59,960 --> 00:07:05,870 ay nagbibigay ng isang GUI o isang user interface para sa GDB na 129 00:07:05,870 --> 00:07:11,120 ay nagbibigay-daan sa amin upang gawin ito nang hindi nangangailangan ng ang command line interface kahit ano pa man 130 00:07:11,120 --> 00:07:13,560 o sa lahat kahit. 131 00:07:13,560 --> 00:07:16,930 Ang paraan na maaari kong ma-access na ay sa pamamagitan ng paggamit ng pindutan ng debug 132 00:07:16,930 --> 00:07:20,120 sa pinakatuktok ng CS50 IDE. 133 00:07:20,120 --> 00:07:24,280 Ngayon sa nakaraan, kung anong mayroon kami nakita ay na ginagamit namin ang command 134 00:07:24,280 --> 00:07:27,660 line upang ipunin at pagkatapos ay magpatakbo ng isang programa. 135 00:07:27,660 --> 00:07:29,790 >> Ang pindutan na debug ang ginagawa pareho ng mga hakbang na ito. 136 00:07:29,790 --> 00:07:34,380 Ngunit ito ay din ilabas ang tab debugger sa dulong kanan 137 00:07:34,380 --> 00:07:38,280 na nagbibigay-daan sa amin upang masuri ang iba't-ibang ng mga katangian ng programa 138 00:07:38,280 --> 00:07:40,500 tulad ng ito ay Isinasagawa. 139 00:07:40,500 --> 00:07:44,280 Kung nag-click ako debug, sa ganitong kaso, ito ay magdadala up 140 00:07:44,280 --> 00:07:48,230 isang bagong tab sa console window sa pinakadulo ibaba. 141 00:07:48,230 --> 00:07:51,160 >> At makikita mo na ang tab na ito ay may ang ilang mga impormasyon sa pinakatuktok. 142 00:07:51,160 --> 00:07:52,670 At maaari naming kalakhan huwag pansinin ito. 143 00:07:52,670 --> 00:07:54,800 Ngunit ang isa sa mga bagay-bagay na gusto naming mapansin 144 00:07:54,800 --> 00:07:57,170 ay na ito output ang parehong bagay na namin 145 00:07:57,170 --> 00:08:03,000 nais makakuha ng kung sinubukan naming patakbuhin ang gumawa sa ang C programa sa terminal na window. 146 00:08:03,000 --> 00:08:06,230 >> Dito, maaari naming makita na ito ay tumatakbo kumalatong, at ito ay may isang iba't ibang mga flags, 147 00:08:06,230 --> 00:08:12,660 at ito ay pag-ipon ng aming count.c file, na kung saan ay ang mga napiling tab sa oras 148 00:08:12,660 --> 00:08:15,100 na ako hit debug. 149 00:08:15,100 --> 00:08:18,010 Kaya ito ay lubhang kapaki-pakinabang dahil ngayon gamit ang pindutang ito debug, 150 00:08:18,010 --> 00:08:23,280 maaari naming sabay-sabay na sumulat ng libro at pagkatapos ay maipatupad ang mga programa na namin ang aktwal na 151 00:08:23,280 --> 00:08:24,460 nais na tumakbo. 152 00:08:24,460 --> 00:08:27,880 >> Isa sa mga flags na mahalaga, sa kasong ito, 153 00:08:27,880 --> 00:08:30,190 ang tunay na kami ay nasuri gamit para sa pinakamahabang oras 154 00:08:30,190 --> 00:08:32,450 kundi pati na rin ng ginawa sa ilang mga kamay kumakaway [hindi marinig], na 155 00:08:32,450 --> 00:08:33,820 ay ang isang ito dito mismo. 156 00:08:33,820 --> 00:08:35,790 Sa clang, sinasabi nito -ggdb3. 157 00:08:35,790 --> 00:08:38,570 158 00:08:38,570 --> 00:08:41,250 Sa kasong ito, kung ano tayo na nagsasabi sa kumalatong, ang aming tagatala, 159 00:08:41,250 --> 00:08:43,820 ay na gusto naming upang ipunin ang aming programa. 160 00:08:43,820 --> 00:08:46,810 Ngunit din kung ano ang mga tinatawag na impormasyon simbolo 161 00:08:46,810 --> 00:08:50,940 upang ang mga compiler talagang may access sa isang pulutong ng mga pinagbabatayan ng impormasyon 162 00:08:50,940 --> 00:08:52,610 nilalaman sa loob ng programa. 163 00:08:52,610 --> 00:08:55,260 >> Mas partikular, ang bilang ng pag-andar na mayroon akong, 164 00:08:55,260 --> 00:08:58,000 ang mga pangalan ng mga pag-andar, ang mga variable, ang mga uri 165 00:08:58,000 --> 00:09:01,730 na ang mga variable na ito ay, at ng iba't ng iba pang mga bagay na makakatulong sa mga debugger 166 00:09:01,730 --> 00:09:04,350 maisagawa ang operasyon nito. 167 00:09:04,350 --> 00:09:06,600 Ngayon ay mayroong isang bagay pa na Mahalagang banggitin 168 00:09:06,600 --> 00:09:10,280 kapag na tatalakayin natin na tumatakbo isang programa sa ganitong paraan. 169 00:09:10,280 --> 00:09:13,660 >> Pansinin na ito ay may tunay na nagdala up ng isang bagong tab sa aming console 170 00:09:13,660 --> 00:09:14,780 sa ilalim. 171 00:09:14,780 --> 00:09:18,600 Hindi na kami upang makipag-ugnayan nang direkta sa mga terminal na window. 172 00:09:18,600 --> 00:09:21,420 Ngunit ang bagong tab ay talagang isang terminal na window. 173 00:09:21,420 --> 00:09:26,710 Ito lamang ay partikular sa mga tumatakbo program na aming nilikha. 174 00:09:26,710 --> 00:09:29,270 >> Pansinin na sa ibaba, sa kumbinasyon na may ilang output 175 00:09:29,270 --> 00:09:33,500 sa pamamagitan ng kumalatong ang tagatala at GDB, na kung saan maaari naming pangunahin huwag pansinin si, 176 00:09:33,500 --> 00:09:37,570 ito ang tunay na nagpapakita ng output ng ang aming programa sa pinakadulo ibaba. 177 00:09:37,570 --> 00:09:41,240 Ngayon ito ay mahalaga sa mapagtanto na ang isang ito window talaga 178 00:09:41,240 --> 00:09:43,360 ay magpapakita sa iyo ng mga output mula sa iyong programa 179 00:09:43,360 --> 00:09:47,190 ngunit maaari ring tanggapin ang input para sa programang iyon, pati na rin. 180 00:09:47,190 --> 00:09:49,260 >> Kaya notice na nagsasabing mangyaring ipasok ang isang numero, 181 00:09:49,260 --> 00:09:53,050 na kung saan ay ang parehong output na kami ay nagkaroon sa terminal na window bago. 182 00:09:53,050 --> 00:09:55,510 Ngunit ito ay ipinapakita na ngayon sa bagong tab. 183 00:09:55,510 --> 00:09:56,550 Maaari ko input isang numero. 184 00:09:56,550 --> 00:10:00,900 At ito ay tunay na function bilang inaasahan namin 185 00:10:00,900 --> 00:10:05,890 Ipinapakita sa atin ng ating debug, output, ang output na maaaring maraming surot, 186 00:10:05,890 --> 00:10:07,010 bilang namin nakita bago. 187 00:10:07,010 --> 00:10:10,460 At sa pinakadulo ibaba, ito tunay na may ilang karagdagang output 188 00:10:10,460 --> 00:10:14,550 mula GDP lang na nagsasabi na ang program na ito ay nakumpleto. 189 00:10:14,550 --> 00:10:16,655 >> Ngayon bilang na nakita mo sa mga ito partikular na run sa pamamagitan, 190 00:10:16,655 --> 00:10:19,370 ito ay hindi partikular na kapaki-pakinabang dahil kahit 191 00:10:19,370 --> 00:10:23,740 bagaman namin ay ang menu debugger dumating up, ito ay isang programa tumatakbo pa rin. 192 00:10:23,740 --> 00:10:26,790 Sa walang punto ay ito talaga pause pagpapatupad para sa amin 193 00:10:26,790 --> 00:10:30,767 para ma-suriin ang lahat ng mga ang mga variable na nilalaman sa loob. 194 00:10:30,767 --> 00:10:32,850 May isa pang bagay na kailangan nating gawin upang 195 00:10:32,850 --> 00:10:36,910 upang makakuha ng GDB upang makilala na gusto naming upang i-pause pagpapatupad ng programa 196 00:10:36,910 --> 00:10:42,820 at hindi lamang payagan ang mga ito upang magpatuloy normal na gagawin namin sa anumang iba pang mga kaso. 197 00:10:42,820 --> 00:10:45,530 >> Upang i-pause ang pagpapatupad, sa ilang mga tiyak na linya, 198 00:10:45,530 --> 00:10:47,830 kailangan naming gumawa ng kung ano ang tinatawag ng break point. 199 00:10:47,830 --> 00:10:52,670 At isang break point ay napaka madaling nilikha sa ganitong CS50 IDE sa pamamagitan ng pagkuha ng iyong mouse 200 00:10:52,670 --> 00:10:57,090 at pag-click nang direkta sa kaliwa ng ilang tiyak na mga numero ng linya. 201 00:10:57,090 --> 00:10:59,920 Sa sandaling gawin ko na, isang pulang tuldok ay lilitaw, na nagpapahiwatig 202 00:10:59,920 --> 00:11:02,300 na na linya ay isang punto ng pahinga ngayon. 203 00:11:02,300 --> 00:11:07,540 >> At sa susunod na oras na patakbuhin ko GDB, ito titigil execution sa na break point 204 00:11:07,540 --> 00:11:10,280 kapag umabot na ang linya ng code. 205 00:11:10,280 --> 00:11:12,230 Ngayon na ito ay isang mahalagang bagay na napagtanto 206 00:11:12,230 --> 00:11:16,140 na ito ay hindi kinakailangan ang kaso na ang bawat linya ng code 207 00:11:16,140 --> 00:11:17,880 ay talagang mapuntahan. 208 00:11:17,880 --> 00:11:23,780 Kung ako ay upang lumikha ng isang function hanggang dito, para example-- void f-- 209 00:11:23,780 --> 00:11:31,230 at lamang gawin ng isang line print here-- kumusta world-- kung hindi ko tawagan ang function na ito, 210 00:11:31,230 --> 00:11:34,770 ito ay ang kaso, kung magpakita ako ng break point dito, 211 00:11:34,770 --> 00:11:36,220 ang function ay hindi kailanman ay tatawagin. 212 00:11:36,220 --> 00:11:38,310 At dahil dito, ang partikular na punto ng pahinga 213 00:11:38,310 --> 00:11:43,040 hindi kailanman ay talagang i-pause pagpapatupad ng programa. 214 00:11:43,040 --> 00:11:48,020 >> Kaya sabihin natin na tama ba akong lumikha ng ng break point sa ilang mga linya ng code 215 00:11:48,020 --> 00:11:50,340 na tunay na pinaandar. 216 00:11:50,340 --> 00:11:53,470 Ngayon sa kasong ito, ito ay ang unang linya sa pangunahing pag-andar. 217 00:11:53,470 --> 00:11:56,630 Kaya ito ay tiyak na ang kaso na, sa lalong madaling simulan ko pagpapatupad, 218 00:11:56,630 --> 00:11:58,580 ay naabot ang unang linya. 219 00:11:58,580 --> 00:12:00,230 GDB ay i-pause execution. 220 00:12:00,230 --> 00:12:04,100 At pagkatapos, ako ay ma- makipag-ugnayan sa debugger. 221 00:12:04,100 --> 00:12:08,480 >> Maaari kang magtakda ng maramihang mga linya ng breakpoints, kung iyong nais. 222 00:12:08,480 --> 00:12:11,365 Maaari din naming lumikha ng isang line up dito sa segment na ito ng code 223 00:12:11,365 --> 00:12:12,490 na hindi kailanman ay naabot. 224 00:12:12,490 --> 00:12:14,744 At maaari din namin-set ang isa pa sa ibaba. 225 00:12:14,744 --> 00:12:16,660 Ang dahilan na gusto namin gusto mong gawin ito bibigyan namin ng 226 00:12:16,660 --> 00:12:19,119 pumunta sa isang maliit na mas kaunti detalye sa ilang sandali lamang. 227 00:12:19,119 --> 00:12:21,660 Kaya sa ngayon, hayaan huwag paganahin ang sa akin lamang ang mga karagdagang mga puntos break 228 00:12:21,660 --> 00:12:24,940 sa gayon maaari naming tumingin sa kung ano ang mangyayari kapag ako ay may isang solong pahinga 229 00:12:24,940 --> 00:12:27,650 point sa aking programa. 230 00:12:27,650 --> 00:12:29,410 Ginawa kong ilang mga pagbabago sa programa na ito. 231 00:12:29,410 --> 00:12:30,750 Kaya kailangan ko upang i-save ito. 232 00:12:30,750 --> 00:12:34,490 Ako ay i-click ang debug sa gayon ay maaari ko simulan ang compilation at pagkatapos ay 233 00:12:34,490 --> 00:12:36,880 pagpapatupad ng debugger. 234 00:12:36,880 --> 00:12:40,632 >> Makikita natin na, pagkatapos ng sandali, ang line na napili namin bilang ang break 235 00:12:40,632 --> 00:12:43,360 point ay naka-highlight sa dilaw. 236 00:12:43,360 --> 00:12:47,440 Maaari din namin mapansin na sa kanang itaas sa debug panel 237 00:12:47,440 --> 00:12:50,940 na ang mga icon pause ay nakabukas sa isang maliit na icon ng pag-play. 238 00:12:50,940 --> 00:12:54,710 Nangangahulugan ito na kami ay may pause pagpapatupad, sa mga partikular na kaso. 239 00:12:54,710 --> 00:12:57,840 At ang pagpindot sa pindutan na Play Gusto daan sa amin upang ipagpatuloy ang pagpapatupad 240 00:12:57,840 --> 00:13:00,000 sa mga tiyak na punto. 241 00:13:00,000 --> 00:13:03,240 >> Pansinin na may isang pares ng mga iba pang pindutan na magagamit sa debug panel, 242 00:13:03,240 --> 00:13:04,220 din. 243 00:13:04,220 --> 00:13:09,470 Tumawid, na kung saan ay nagbibigay-daan sa akin upang execute na isang linya ng code 244 00:13:09,470 --> 00:13:14,030 at tumawid sa na linya sa susunod na isa, na kung saan, sa kasong ito, 245 00:13:14,030 --> 00:13:17,060 ay nangangahulugan na ang printf pahayag ay naisakatuparan. 246 00:13:17,060 --> 00:13:22,310 At ito ay pagkatapos i-pause pagpapatupad sa 13 na linya, tulad ng sa gayon. 247 00:13:22,310 --> 00:13:25,090 >> At mayroon din ng isang hakbang sa function, kung saan 248 00:13:25,090 --> 00:13:28,950 ay kapaki-pakinabang kung ako ay nilikha ng iba pang mga function sa ibang lugar sa source code. 249 00:13:28,950 --> 00:13:31,420 At gusto ko sa hakbang sa mga function sa halip na 250 00:13:31,420 --> 00:13:33,050 execute na pag-andar bilang isang buo. 251 00:13:33,050 --> 00:13:37,279 Ngunit kami ay tumingin nang higit pa sa mga hakbang sa function na sa isang sandali lamang. 252 00:13:37,279 --> 00:13:40,320 Ngayon pansinin ang ilang mga iba pang bagay na ang tunay na umiiral sa loob ng debug panel. 253 00:13:40,320 --> 00:13:44,110 >> Mayroon kaming na ito panel na tinatawag na ang tumawag stack, na nagpapakita sa amin 254 00:13:44,110 --> 00:13:45,300 kung saan eksakto kami. 255 00:13:45,300 --> 00:13:48,550 Sa kasong ito, natin sa loob sa mga pangunahing function. 256 00:13:48,550 --> 00:13:50,880 Ang aming script ay tinatawag count.c. 257 00:13:50,880 --> 00:13:53,820 At mangyari namin upang maging sa 13 column ng isa, linya, na kung saan 258 00:13:53,820 --> 00:13:58,950 ay tiyak kung ano ang naka-highlight na rehiyon ng source code nagpapahiwatig, pati na rin. 259 00:13:58,950 --> 00:14:02,435 >> Ngayon pansinin na ito ay nagpapakita rin sa ilalim ng seksyon ng mga lokal na variable 260 00:14:02,435 --> 00:14:06,710 lahat ng mga variable na umiiral sa loob ng function na ito. 261 00:14:06,710 --> 00:14:08,930 Ito ay mahalaga na tandaan na ang lahat ng mga variable 262 00:14:08,930 --> 00:14:12,580 lalabas sa mga lokal na variable na seksyon sa loob ng isang function, 263 00:14:12,580 --> 00:14:14,380 kahit na bago ang mga ito ay tinukoy. 264 00:14:14,380 --> 00:14:19,160 Maaari naming makita dito na kami ay may isang variable tinatawag num, ay may isang default na halaga ng 0, 265 00:14:19,160 --> 00:14:21,280 at ito ay uri ng int. 266 00:14:21,280 --> 00:14:24,110 >> Ngayon bago namin talagang magpasimula lahat ng mga variable, 267 00:14:24,110 --> 00:14:26,685 kami ay hindi kinakailangang garantisadong upang makita ang isang halaga ng 0. 268 00:14:26,685 --> 00:14:29,200 At depende sa iba pang mga pagbitay na ikaw ay ginanap 269 00:14:29,200 --> 00:14:32,020 at ang estado ng iyong memorya kapag aktwal mong patakbuhin ang program na ito, 270 00:14:32,020 --> 00:14:34,605 maaari mong makita na ikaw ay hindi makita ang mga halaga ng 0 271 00:14:34,605 --> 00:14:36,550 at, sa halip, ang ilang mga iba pang nakatutuwang mga numero. 272 00:14:36,550 --> 00:14:38,390 >> Ngunit huwag mag-alala tungkol sa na. 273 00:14:38,390 --> 00:14:44,610 Hindi ito ay magiging may-katuturang hanggang ang tunay na ikaw magpasimula ng halaga. 274 00:14:44,610 --> 00:14:49,630 Ngayon sa kasong ito, maaari naming makita na Ako ay ginanap sa ilang mga output. 275 00:14:49,630 --> 00:14:52,131 At ako, sa ngayon, naka-pause execution. 276 00:14:52,131 --> 00:14:53,880 Ngunit sa kasong ito, kung ano ang Gusto ko talagang gawin 277 00:14:53,880 --> 00:14:58,060 ay sa ngayon tumawid sa linyang ito ng code sa gayon ay maaari ko talaga 278 00:14:58,060 --> 00:15:04,390 query ng user para sa na int na gusto naming gamitin sa aming programa. 279 00:15:04,390 --> 00:15:07,060 >> Ngayon sa kasong ito, kapag ang Pindutin ko hakbang sa ibabaw, ang paunawa 280 00:15:07,060 --> 00:15:11,940 na ang I-pause o sa halip ng Resume button ay nagbago sa Pause button 281 00:15:11,940 --> 00:15:14,022 dahil ang code na ito ay aktwal na e-execute. 282 00:15:14,022 --> 00:15:15,730 Anong nangyayari ngayon ay na ito ay 283 00:15:15,730 --> 00:15:21,630 naghihintay para sa amin na input ng ilang impormasyon bilang maaari naming makita sa pamamagitan ng aming output text 284 00:15:21,630 --> 00:15:23,600 sa pinakadulo ibaba. 285 00:15:23,600 --> 00:15:25,787 >> Kaya ngayon, ito ay hindi tunay na naka-pause, 286 00:15:25,787 --> 00:15:28,620 kahit na ito, uri ng, lilitaw na dahil wala ang nangyayari. 287 00:15:28,620 --> 00:15:32,360 Ngunit ito lamang ang kaya mangyayari na sa aking mga tiyak na kaso sa 13 na linya, 288 00:15:32,360 --> 00:15:34,210 Hinihintay ko input ng user. 289 00:15:34,210 --> 00:15:39,130 At kaya GDB ay hindi magagawang upang siyasatin isang programa tulad ng ito ay tumatakbo. 290 00:15:39,130 --> 00:15:43,370 >> Ngayon ang susunod na oras na ipasok ko ang ilang mga input-- kaya ko na ipasok na number 5, 291 00:15:43,370 --> 00:15:46,140 bilang namin nakita sa past-- hit Return, at kami 292 00:15:46,140 --> 00:15:51,430 mapapansin na, agad-agad, GDB pause at, muli, nagha-highlight ang susunod na linya. 293 00:15:51,430 --> 00:15:55,320 Ngunit mapansin na ngayon, bilang isang resulta ng aming inputting ng isang halaga, 294 00:15:55,320 --> 00:15:58,930 Na-update namin ang halaga na loob ng ating mga lokal na variable, na 295 00:15:58,930 --> 00:16:05,560 ay lubhang kapaki-pakinabang na malaman ang tiyak kung ano ang numero na nasa memory. 296 00:16:05,560 --> 00:16:10,650 >> Ngayon ay maaari kong payagan ang program na ito upang magpatuloy naglalaro hanggang sa katapusan ng pagpapatupad nito 297 00:16:10,650 --> 00:16:12,570 sa pamamagitan ng pagpindot ang Ipagpatuloy. 298 00:16:12,570 --> 00:16:16,410 Maaari naming makita na masyadong mabilis ay ang tapusin ang program Isinasagawa 299 00:16:16,410 --> 00:16:19,790 na may parehong output na tayo ay nagkaroon ng bago, isinara ang debugger, 300 00:16:19,790 --> 00:16:23,170 at ngayon ang program na ito ay tumigil sa ganap na. 301 00:16:23,170 --> 00:16:25,320 >> Ipakita ko na lamang para sa mga mga layunin ng kung ano ang nakikita 302 00:16:25,320 --> 00:16:27,280 mangyayari kapag aktwal na namin pindutin ang Ipagpatuloy. 303 00:16:27,280 --> 00:16:30,640 Ngunit namin talagang ay pagpunta sa nais na bumalik sa programa na ito 304 00:16:30,640 --> 00:16:33,820 upang maaari naming subukan na debug tiyak kung ano ang nangyayari. 305 00:16:33,820 --> 00:16:37,980 Ngayon na ako gamit ang debugger, upang ako'y Hindi kailangan ang mga debug printf pahayag. 306 00:16:37,980 --> 00:16:43,860 >> Kaya maaari kong tanggalin ang mga ito bilang aking gagawin ngayon lamang upang bumalik sa aming simple code 307 00:16:43,860 --> 00:16:45,950 na nagkaroon kami ng ilang sandali ang nakalipas. 308 00:16:45,950 --> 00:16:48,790 Ngayon kapag ako i-save ang programa at execute ito, 309 00:16:48,790 --> 00:16:53,700 ito ay, muli, pumunta sa na unang basagin point na ako ay on line 11. 310 00:16:53,700 --> 00:16:57,700 At kukunin ko na magagawang upang siyasatin ang aking mga variable na gusto kong gawin. 311 00:16:57,700 --> 00:17:00,695 >> Kaya ito lang ang mangyayari na ito bahagi ay hindi masyadong kawili-wili, 312 00:17:00,695 --> 00:17:04,364 At alam ko na pupuntahan ko upang i-print out ang pahayag na ito. 313 00:17:04,364 --> 00:17:05,280 Mangyaring ipasok ang isang numero. 314 00:17:05,280 --> 00:17:08,099 At pagkatapos ay, alam ko na pupuntahan ko upang hilingin sa user para sa na integer. 315 00:17:08,099 --> 00:17:13,329 Kaya marahil, talagang gusto kong ilipat ang aking basagin point nang kaunti pa pababa. 316 00:17:13,329 --> 00:17:16,710 >> Maaari mong alisin break points sa pamamagitan ng pag-click, muli, direkta 317 00:17:16,710 --> 00:17:18,460 sa kaliwa ng na numero ng linya. 318 00:17:18,460 --> 00:17:22,200 Iyon pulang tuldok ay mawawala, na nagpapahiwatig na na break point ay nawala ngayon. 319 00:17:22,200 --> 00:17:24,780 Ngayon sa kasong ito, pagpapatupad ay naka-pause. 320 00:17:24,780 --> 00:17:27,770 At kaya ito ay hindi tunay na pagpunta sa ipagpatuloy sa mga partikular na pagkakataon. 321 00:17:27,770 --> 00:17:30,210 Ngunit maaari kong i-set ng isang break ituro ang isang maliit na piraso mamaya. 322 00:17:30,210 --> 00:17:33,880 >> At kapag ngayon ipagpatuloy ko ang aking code, ito ay ipagpatuloy at sabihin sa 323 00:17:33,880 --> 00:17:36,190 ang punto ng na break point. 324 00:17:36,190 --> 00:17:37,374 Muli, ako pindutin ang Ipagpatuloy. 325 00:17:37,374 --> 00:17:39,040 Hindi mukhang tulad ng anumang bagay ang nangyayari. 326 00:17:39,040 --> 00:17:41,450 Ngunit iyon ay dahil ang aking code ay naghihintay para sa input. 327 00:17:41,450 --> 00:17:47,900 Ako ay ipasok ang isang numero 5, pindutin ang Enter, at ngayon ang susunod na break point ay pindutin. 328 00:17:47,900 --> 00:17:50,570 >> Ngayon sa kasong ito, ito ay ang linya ng code 329 00:17:50,570 --> 00:17:53,820 na, bago, alam namin nangyari na mayroong bug. 330 00:17:53,820 --> 00:17:57,590 Kaya sabihin suriin kung ano ang mangyayari sa partikular na punto ng oras. 331 00:17:57,590 --> 00:18:02,620 Kapag ang isang linya ay naka-highlight, ito line ay hindi pa naisakatuparan. 332 00:18:02,620 --> 00:18:06,490 Kaya sa kasong ito, maaari naming makita na mayroon akong isang numero, na 333 00:18:06,490 --> 00:18:11,610 Mayroon akong isang integer na tinatawag na num na may isang halaga 5. 334 00:18:11,610 --> 00:18:15,090 At ako pagpunta sa ay gumaganap ang ilang mga matematika sa na numero. 335 00:18:15,090 --> 00:18:20,130 >> Kung ako na hakbang sa paglipas na, maaari naming mapapansin na ang halaga para sa num 336 00:18:20,130 --> 00:18:23,780 ay nagbago sa alinsunod sa mga arithmetic na aktwal na namin ang nagawa mo. 337 00:18:23,780 --> 00:18:26,810 At ngayon na kami ay sa loob ng mga ito para sa loop 338 00:18:26,810 --> 00:18:29,090 o ngayon na ang para sa loop mismo ay naka-highlight, 339 00:18:29,090 --> 00:18:32,450 nakita namin na kami ay may isang bagong variable na tinatawag na i na 340 00:18:32,450 --> 00:18:35,370 ay pagpunta sa magamit sa na para sa loop. 341 00:18:35,370 --> 00:18:38,230 >> Ngayon tandaan bago na ako nabanggit na minsan ikaw ay 342 00:18:38,230 --> 00:18:43,470 pagpunta upang makita ang ilang mga uri ng mga loko numero bilang default bago ang numerong iyon 343 00:18:43,470 --> 00:18:45,530 o variable na talagang nasimulan. 344 00:18:45,530 --> 00:18:49,040 Maaari naming makita na tiyak dito sa variable na ito 345 00:18:49,040 --> 00:18:51,345 tinatawag i, na kung saan ay hindi pa nasimulan 346 00:18:51,345 --> 00:18:53,560 sa oras ng pag-highlight. 347 00:18:53,560 --> 00:18:57,070 Ngunit maaari naming makita na ito ay may ilang mga numero ng na hindi talaga namin inaasahan. 348 00:18:57,070 --> 00:18:57,620 >> Iyon ang OK. 349 00:18:57,620 --> 00:18:59,661 Huwag mag-alala tungkol sa mga ito dahil kami ay hindi tunay 350 00:18:59,661 --> 00:19:04,970 initialize ang numerong iyon hanggang ako hakbang sa linyang ito at ang halaga 351 00:19:04,970 --> 00:19:08,560 i ay nasimulan sa ang halaga ng 1. 352 00:19:08,560 --> 00:19:11,400 Kaya upang makita na na talagang ang kaso, ni hakbang sa ibabaw ipaalam. 353 00:19:11,400 --> 00:19:14,420 Maaari naming ngayon makita na na line ay pinaandar. 354 00:19:14,420 --> 00:19:17,000 At ngayon kami ay highlight ang linyang ito printf. 355 00:19:17,000 --> 00:19:22,230 >> At maaari naming ngayong makita kung paano ang aming mga halaga ng ako ay nagbago at 3 sa paglipas ng panahon. 356 00:19:22,230 --> 00:19:26,450 Ito ay lubhang kapaki-pakinabang na gawin, sa katunayan, ay sa hakbang sa paglipas ng mga linya ng paulit-ulit. 357 00:19:26,450 --> 00:19:30,480 At maaari mong mahanap kung ano ang tunay ang mangyayari sa loob ng iyong para sa loop 358 00:19:30,480 --> 00:19:33,660 at kung ano ang mangyayari sa mga variable sa loob ng na para sa loop 359 00:19:33,660 --> 00:19:39,200 pati na pagpapatupad ng programa nangyayari sa isang hakbang sa isang pagkakataon. 360 00:19:39,200 --> 00:19:41,110 >> Ngayon sa puntong ito, ako stepped sa ibabaw lamang ng sapat na 361 00:19:41,110 --> 00:19:44,210 na ako ngayon sa dulo ng aking programa. 362 00:19:44,210 --> 00:19:46,980 Kung ako na hakbang sa paglipas na, ito ay talagang itigil execution 363 00:19:46,980 --> 00:19:48,860 tulad ng nakita natin sa nakaraan. 364 00:19:48,860 --> 00:19:52,110 Hayaan akong i-restart ito, pa muli, kaya na maaari kong ituro sa ibang bagay out, 365 00:19:52,110 --> 00:19:53,320 din. 366 00:19:53,320 --> 00:19:55,350 >> Sa kasong ito, ito ay ngayon humihingi sa akin, muli, 367 00:19:55,350 --> 00:19:57,100 para sa isang numero, na Ako ay, muli, ipasok. 368 00:19:57,100 --> 00:20:00,300 Ngunit oras na ito, pupuntahan ko na ipasok sa isang mas malaking bilang upang ang para sa loop 369 00:20:00,300 --> 00:20:02,540 ay umulit pa ulit. 370 00:20:02,540 --> 00:20:06,090 Sa kasong ito, pupuntahan ko upang ipasok ang isang halaga ng 11. 371 00:20:06,090 --> 00:20:08,390 >> Ngayon muli dahil gusto ko i-set ng break point sa 15 na linya, 372 00:20:08,390 --> 00:20:10,490 ito ay pagpunta sa i-highlight na line. 373 00:20:10,490 --> 00:20:12,980 Maaari naming makita na ang aming number 11 ay tama 374 00:20:12,980 --> 00:20:15,560 kinakatawan sa aming mga lokal na variable. 375 00:20:15,560 --> 00:20:22,460 Pagtapak sa paglipas na, maaari naming ngayon panoorin kung ano ang mangyayari sa aming mga halaga ng i 376 00:20:22,460 --> 00:20:25,680 bilang namin magpatuloy sa loob ng mga ito para sa loop. 377 00:20:25,680 --> 00:20:31,960 Ito ay makakakuha ng incremented sa bawat oras na namin maabot ang tuktok ng na para sa loop. 378 00:20:31,960 --> 00:20:35,110 >> Ngayon ay isa sa mga bagay na maaaring maging kapaki-pakinabang na gawin sa panahon ng pagganap 379 00:20:35,110 --> 00:20:40,490 ng programang ito ay para sa akin na ang tunay baguhin ang mga variable gitna ng agos upang makita 380 00:20:40,490 --> 00:20:42,450 ano ang mangyayari sa aking programa. 381 00:20:42,450 --> 00:20:46,540 Sa kasong ito, maaari ko talagang i-click ang double ang halaga. 382 00:20:46,540 --> 00:20:48,040 Pansinin na ito ay nagiging isang patlang ng teksto. 383 00:20:48,040 --> 00:20:50,280 >> Ngayon ay maaari kong ipasok ang iba't ibang Pinahahalagahan kabuuan 384 00:20:50,280 --> 00:20:55,700 upang makita kung paano kumikilos ang aking programa kapag ako ay nagbago na variable. 385 00:20:55,700 --> 00:20:59,560 Ngayon sa kasong ito, ang mga variable Naglalaman i ngayon ang halaga 10. 386 00:20:59,560 --> 00:21:02,810 Ngunit ang programa pa rin ang naka-pause sa execution. 387 00:21:02,810 --> 00:21:07,610 Kapag hakbang ko sa loob, nakikita ko na ang halaga i, na ipinasok ko bilang 10, 388 00:21:07,610 --> 00:21:12,170 ay hindi mas malaki kaysa sa halaga ng num, na agad na nagiging sanhi ng para sa loop 389 00:21:12,170 --> 00:21:14,240 upang ihinto Isinasagawa. 390 00:21:14,240 --> 00:21:16,210 >> Ngayon na ay hindi lamang ang dahilan kung bakit gusto mo 391 00:21:16,210 --> 00:21:19,450 nais na baguhin ang mga variable sa lugar. 392 00:21:19,450 --> 00:21:22,210 Maaari mong aktwal na nais subukan na baguhin ito sa gayon 393 00:21:22,210 --> 00:21:24,590 na maaari mong patuloy pagpapatupad ng isang loop 394 00:21:24,590 --> 00:21:27,370 o kaya na maaari mong baguhin ilang mga halaga bago ito 395 00:21:27,370 --> 00:21:32,630 umabot ng ilang mga tiyak na hanay ng arithmetic kayo tungkol sa mga gumanap. 396 00:21:32,630 --> 00:21:36,210 >> Kaya ngayon na ang tunay na palitan namin ang halaga ng i bilang ng programa ay Isinasagawa, 397 00:21:36,210 --> 00:21:39,540 ito ang sanhi ng para sa loop upang tumigil maaga dahil, ang lahat ng isang biglaang, i 398 00:21:39,540 --> 00:21:42,770 nangyari na mas malaki kaysa sa halaga ng num, ibig sabihin na iyon para sa loop 399 00:21:42,770 --> 00:21:45,410 hindi na kinakailangan na pinaandar. 400 00:21:45,410 --> 00:21:48,780 Dagdag dito, ang nangyari ito upang maging ang kaso na binago namin ang halaga ng i 401 00:21:48,780 --> 00:21:53,270 kapag ang linya 17 ay naka-highlight, na kung saan ay ang punto sa oras 402 00:21:53,270 --> 00:21:56,280 na ang para sa loop execution ay tunay na sinusuri. 403 00:21:56,280 --> 00:22:00,210 >> Kung may nagbago ko ang halaga ng i sa isang iba't ibang mga linya, sabihin 19, 404 00:22:00,210 --> 00:22:03,360 sana ay nakita namin ang iba't ibang pag-uugali dahil line 19 gagawin 405 00:22:03,360 --> 00:22:08,310 naglapat bago ang loop kondisyon ay muling sinuri. 406 00:22:08,310 --> 00:22:11,900 Ngayon sa puntong ito, Ako, muli, sa dulo ng programang ito. 407 00:22:11,900 --> 00:22:15,707 At maaari ko bang payagan ang mga ito upang magpatuloy sa payagan ang aking mga programa na umalis natural. 408 00:22:15,707 --> 00:22:18,290 Subalit mayroong isang pares ng mga bagay na mahalaga upang mag-alis 409 00:22:18,290 --> 00:22:19,960 mula sa partikular na talakayan. 410 00:22:19,960 --> 00:22:22,490 Kailangan mong suriin iyong sariling pagpapalagay 411 00:22:22,490 --> 00:22:24,710 tungkol sa kung paano ang mga code ay dapat na kumikilos. 412 00:22:24,710 --> 00:22:28,220 Anumang oras sa tingin mo na ang ilang mga piraso ng code ng alam mo ang mangyayari sa trabaho, 413 00:22:28,220 --> 00:22:30,940 na maaaring maging isang pulang bandila upang pumunta bumalik at suriin, at tiyaking 414 00:22:30,940 --> 00:22:33,470 na ang iyong mga palagay ng paano na code ay operating 415 00:22:33,470 --> 00:22:38,290 ay tunay na tunay na kung paano ito ay ipinahayag sa iyong source code. 416 00:22:38,290 --> 00:22:41,300 >> Ngunit kahit na higit pa sa point, kapag kami ay gumagamit ng debugger, 417 00:22:41,300 --> 00:22:43,920 maaari kang maglagay ng breakpoints iba't-ibang linya ng code, 418 00:22:43,920 --> 00:22:48,110 na kung saan ay magiging sanhi ng debugger upang i-pause ang pagpapatupad sa bawat isa sa mga linya 419 00:22:48,110 --> 00:22:52,210 sa gayon maaari mong suriin ang mga memory o kahit na baguhin ito sa lugar. 420 00:22:52,210 --> 00:22:55,630 At muli, tandaan na maaari mong lumikha ng maramihang breakpoints upang ikaw 421 00:22:55,630 --> 00:23:00,390 Maaari ring ipagpatuloy ang pagpapatupad, laktawan sa paglipas ng malaking bahagi ng code, 422 00:23:00,390 --> 00:23:04,790 at makikita ito awtomatikong i-pause sa susunod na break point. 423 00:23:04,790 --> 00:23:07,760 >> Mayroon talagang mas advanced mga tampok ng debugger, pati na rin. 424 00:23:07,760 --> 00:23:10,170 Ngunit kami ay may sa sumangguni sa iyo sa ilang mga kasunod na mga video 425 00:23:10,170 --> 00:23:14,090 upang tunay manunudyo bukod kung paano na gamitin ang mga partikular na pag-andar. 426 00:23:14,090 --> 00:23:15,990 Para sa ngayon, salamat sa iyo napaka para sa panonood. 427 00:23:15,990 --> 00:23:18,080 At magandang debugging luck.