1 00:00:00,000 --> 00:00:00,309 2 00:00:00,309 --> 00:00:02,350 [? DAN ARMADARAS:?] Hi, Unë jam [? Dan Armadaras?]. 3 00:00:02,350 --> 00:00:04,410 Sot, ne jemi duke shkuar për të kërkoni në debugging. 4 00:00:04,410 --> 00:00:06,697 Jo vetëm do të shkojmë për flasim për disa teknika, 5 00:00:06,697 --> 00:00:09,280 por edhe ne do të shikojmë në disa nga karakteristikat e përmbajtur 6 00:00:09,280 --> 00:00:14,170 brenda IDE CS50 që lejojnë të lehtë të korrigjoj një program. 7 00:00:14,170 --> 00:00:16,272 >> Vetëm një shembull i diçka që mund të shkojnë keq 8 00:00:16,272 --> 00:00:18,730 dhe kjo është në fakt diçka që ne kemi parë tashmë më parë. 9 00:00:18,730 --> 00:00:23,200 Në këtë rast, ky është një program C që pranon një numër të plotë nga përdoruesi, 10 00:00:23,200 --> 00:00:27,580 ndan atë nga dy, dhe siguron prodhimi përsëri për përdoruesit. 11 00:00:27,580 --> 00:00:30,610 Tani nga ajo që ne kemi parë më herët në ligjërata, 12 00:00:30,610 --> 00:00:34,370 ne e dimë se ky fakt do të shkaktojë lloje të veçanta të problemeve të ndarjes 13 00:00:34,370 --> 00:00:35,860 kur kemi numra tek. 14 00:00:35,860 --> 00:00:40,330 >> Në mënyrë të veçantë, ne vetëm do të hedhin larg çdo gjë pas presjes dhjetore. 15 00:00:40,330 --> 00:00:43,170 Tani, ne e dimë se kjo ndodh të jetë rasti. 16 00:00:43,170 --> 00:00:47,430 Dhe nëse ne të drejtuar atë, ne mund të konfirmojmë Dyshimet tona, Së pari, duke përpilimit. 17 00:00:47,430 --> 00:00:50,460 Dhe pastaj, duke xhiruar dhe hyjnë një numër i rastësishëm. 18 00:00:50,460 --> 00:00:51,720 >> Kjo nuk është asgjë e re. 19 00:00:51,720 --> 00:00:54,490 Por kjo është në fakt një shembull i një bug që 20 00:00:54,490 --> 00:00:58,810 mund të ekzistojnë brenda një programi më të madh që bëhet më e vështirë për të gjetur. 21 00:00:58,810 --> 00:01:02,640 Edhe pse ne e dimë se çfarë çështja është, thelbi i vërtetë i çështjes 22 00:01:02,640 --> 00:01:06,250 mund të jetë duke u përpjekur për të identifikuar veçanërisht në rastin kur gabimi ndodh, 23 00:01:06,250 --> 00:01:09,750 identifikuar se çfarë këtë problem është, dhe pastaj fiksimin e tij. 24 00:01:09,750 --> 00:01:14,400 Pra ofrojnë këtë si një shembull e asaj që mund të jetë diçka 25 00:01:14,400 --> 00:01:19,030 që ne tashmë e dimë, por mund të jetë varrosur brenda elementeve të tjera të kodit. 26 00:01:19,030 --> 00:01:23,090 >> Pra, hapjen e këtij burim tjetër Kodi skedë si një shembull, 27 00:01:23,090 --> 00:01:27,165 ky problem ndarje është tani pjesë e një programi më të madh. 28 00:01:27,165 --> 00:01:29,040 Ende mund të jetë pak bit ndërtuar, dhe ne 29 00:01:29,040 --> 00:01:31,076 mund të jetë në gjendje të lehtë të identifikuar atë, veçanërisht 30 00:01:31,076 --> 00:01:32,450 pasi ne jemi vetëm duke diskutuar këtë. 31 00:01:32,450 --> 00:01:38,250 Por ne mund të kuptoj se ky Problemi mund të ekzistojë në një shkallë më të madhe. 32 00:01:38,250 --> 00:01:45,450 >> Nëse unë përpilojnë këtë dhe tani drejtuar atë, të hyjë një numër i rastësishëm, 33 00:01:45,450 --> 00:01:49,816 ne mund të shohim se ne nuk do të marrë saktësisht prodhimit që ne mund të kemi pritur. 34 00:01:49,816 --> 00:01:51,690 Në këtë rast të veçantë, mund të themi se ne 35 00:01:51,690 --> 00:01:56,060 duan për të numëruar të gjithë numrat nga një deri në një farë numër specifik. 36 00:01:56,060 --> 00:01:58,130 Dhe ne mund të shohim se ne kanë një sërë çështjesh 37 00:01:58,130 --> 00:02:03,880 këtu nëse ne jemi kompjuteri, thjesht, 0 dhe 1 kur ne japim një kontribut prej 5. 38 00:02:03,880 --> 00:02:07,380 >> Kështu që ne tashmë e dimë se ka një problem këtu. 39 00:02:07,380 --> 00:02:11,662 Por ne nuk mund të di saktësisht ku kjo çështje të vërtetë ekziston. 40 00:02:11,662 --> 00:02:13,620 Tani një nga mënyrat që ne mund të përpiqemi për të rregulluar këtë 41 00:02:13,620 --> 00:02:15,745 është diçka që ne kemi tashmë është futur në. 42 00:02:15,745 --> 00:02:18,880 Ne vetëm mund ta përdorin atë në një shkallë më të madhe. 43 00:02:18,880 --> 00:02:21,680 >> On line 14, ne kemi ky funksion printf, 44 00:02:21,680 --> 00:02:25,620 e cila na lejon për të shtypur jashtë shtetit e pjesëve të ndryshme të informacionit. 45 00:02:25,620 --> 00:02:28,880 Dhe kjo është diçka që ju duhet të levave brenda programit tuaj 46 00:02:28,880 --> 00:02:33,100 të përpiqen të kuptoj se saktësisht se çfarë është ndodh në linjat e ndryshme të kodit. 47 00:02:33,100 --> 00:02:36,350 Pra, edhe në qoftë se kjo nuk është Prodhimi i fundit që ne në fakt 48 00:02:36,350 --> 00:02:39,830 duan të prodhuar nga ky program, ne ende 49 00:02:39,830 --> 00:02:42,300 mund të kenë disa debug Deklaratat ku ne 50 00:02:42,300 --> 00:02:46,970 mund të përpiqen të kuptoj se pikërisht atë po ndodh brenda kodit tonë. 51 00:02:46,970 --> 00:02:51,210 >> Pra, në këtë rast, unë do të printf me tag debug. 52 00:02:51,210 --> 00:02:53,540 Në këtë rast, kjo është vetëm një varg debug 53 00:02:53,540 --> 00:02:56,840 që unë jam deri-vënë në mënyrë që të bëhet shumë të qartë në prodhimin e kodin tim 54 00:02:56,840 --> 00:02:59,200 çfarë është ajo që unë dua të tregoj. 55 00:02:59,200 --> 00:03:04,410 Dhe prodhimit këtu numri që ne kemi llogaritur. 56 00:03:04,410 --> 00:03:06,800 >> Në këtë rast, unë mund duan të dinë saktësisht 57 00:03:06,800 --> 00:03:11,380 çfarë po ndodh para dhe pas disa llogaritje të veçantë. 58 00:03:11,380 --> 00:03:16,224 Kështu që unë mund të përdorin një printf para dhe pas kësaj linjë e kodit. 59 00:03:16,224 --> 00:03:18,640 Në këtë rast, unë mund edhe e bëjnë atë një pak më të qartë 60 00:03:18,640 --> 00:03:21,960 duke thënë debug më parë dhe debug pas kaq 61 00:03:21,960 --> 00:03:26,540 që unë nuk e ngatërruar veten me Linjat e shumta që duken identike. 62 00:03:26,540 --> 00:03:32,290 >> Tani në qoftë se ne të përpiluar këtë dhe të kandidojë ajo, të hyjë në një numër si pesë përsëri, 63 00:03:32,290 --> 00:03:35,090 ne mund të shohim se kemi tani e prodhimit para dhe pas 64 00:03:35,090 --> 00:03:40,670 dhe për të gjetur se ne nuk kemi bërë një të qartë ndarje të qartë ose të paturit e numrit 65 00:03:40,670 --> 00:03:43,680 që ne të vërtetë duan të bëjnë. 66 00:03:43,680 --> 00:03:48,660 Tani, në këtë rast, kjo është jo të vërtetë një prodhim i qartë. 67 00:03:48,660 --> 00:03:52,440 Kjo nuk është me të vërtetë një rezultat të qartë se ne duam nga ky program të veçantë. 68 00:03:52,440 --> 00:03:54,427 >> Dhe kjo është, përsëri, një pak ndërtuar. 69 00:03:54,427 --> 00:03:57,510 Por, ndoshta, një nga gjërat që ne mund të bëjmë nëse specifikimi tha 70 00:03:57,510 --> 00:04:01,900 që ne duam për të ndarë këtë me 2 dhe shtoni 1-- kështu me fjalë të tjera, 71 00:04:01,900 --> 00:04:04,550 ne duam të rrumbullakët up-- pastaj ne mund të dimë se ne mund të 72 00:04:04,550 --> 00:04:08,060 bëj atë gjë të veçantë, në këtë rast. 73 00:04:08,060 --> 00:04:14,010 Tani këtu ne e dimë se do të jemi gjendje për të shtuar 1 në numrin tonë të përgjysmuar. 74 00:04:14,010 --> 00:04:16,490 >> Le të përpiluar këtë dhe konfirmojnë se kjo 75 00:04:16,490 --> 00:04:18,860 sillet në mënyrën që ne duam të. 76 00:04:18,860 --> 00:04:21,980 Ne mund të shohim se tani para duke pasur, ne kemi numrin 5. 77 00:04:21,980 --> 00:04:26,620 Pasi ka, ne kemi numrin e 3, e cila sipas specifikimeve tonë, 78 00:04:26,620 --> 00:04:29,292 është ajo që kemi dashur të bëjmë. 79 00:04:29,292 --> 00:04:31,000 Por, nëse ne shikojmë në prodhimit këtu, ne mund të 80 00:04:31,000 --> 00:04:33,760 shihni se ne mund të kemi një tjetër bug krejt, i cili është 81 00:04:33,760 --> 00:04:36,940 se ne jemi duke filluar numërimin tonë nga 0. 82 00:04:36,940 --> 00:04:39,390 >> Tani përsëri, kjo është diçka që kemi parë në të kaluarën 83 00:04:39,390 --> 00:04:42,500 dhe ne mund të rregullojmë mjaft lehtë. 84 00:04:42,500 --> 00:04:44,790 Por në këtë rast, ne gjithashtu kishte dobi 85 00:04:44,790 --> 00:04:48,940 e përdorur deklaratën printf direkt brenda për lak 86 00:04:48,940 --> 00:04:52,930 të dinë saktësisht se ku se gabimi u ndodh. 87 00:04:52,930 --> 00:04:55,150 Deklaratat Pra printf janë shumë të dobishme për të ndihmuar 88 00:04:55,150 --> 00:04:57,940 ju të përcaktojë se ku, pikërisht në kodin tuaj burim, 89 00:04:57,940 --> 00:05:00,620 një gabim i veçantë po ndodh. 90 00:05:00,620 --> 00:05:03,650 >> Dhe është gjithashtu e rëndësishme që të kuptojnë që, si ne jemi duke shkruar kodin, 91 00:05:03,650 --> 00:05:06,052 ne mund të kemi supozime në lidhje me gjendjen e një programi. 92 00:05:06,052 --> 00:05:08,510 Ose ne mund të kemi supozime për atë pjesë e programit 93 00:05:08,510 --> 00:05:13,020 në fakt është i saktë apo i pasaktë kur më vonë si ne ndërtojmë mbi atë program 94 00:05:13,020 --> 00:05:15,950 dhe e bëjnë atë pjesë e një kompleks dhe programin më të mëdha 95 00:05:15,950 --> 00:05:19,700 se ne e kuptojmë se disa aspekt e që në fakt është buggy. 96 00:05:19,700 --> 00:05:22,680 >> Duke përdorur printf me të vërtetë mund të ndihmojë kufizoni dhe identifikimin 97 00:05:22,680 --> 00:05:26,430 rajonet e një program që mund të mos të sillen saktësisht mënyrën se si ne 98 00:05:26,430 --> 00:05:29,500 presin, bazuar në supozimet tona. 99 00:05:29,500 --> 00:05:31,460 Por ka mjete të tjera në dispozicion, si edhe, 100 00:05:31,460 --> 00:05:34,860 që të na lejojë të përpiqen të kuptoj nga ku një gabim po ndodh 101 00:05:34,860 --> 00:05:39,930 dhe gjithashtu, në veçanti, se çfarë gjëra janë duke ndodhur brenda programit. 102 00:05:39,930 --> 00:05:41,990 >> Pra, duke përdorur printf është shumë e dobishme kur ne duam 103 00:05:41,990 --> 00:05:45,900 për të identifikuar fushat specifike të një program që kanë disa bug. 104 00:05:45,900 --> 00:05:47,730 Por ajo gjithashtu bëhet e lodhshme, pas një kohë. 105 00:05:47,730 --> 00:05:50,500 Në këtë rast, ky është një Programi relativisht e thjeshtë 106 00:05:50,500 --> 00:05:52,750 me vetëm një ose dy variablave. 107 00:05:52,750 --> 00:05:57,260 Dhe kjo bëhet shumë e lehtë për ne për të shtypura nga vlera e këtyre variablave 108 00:05:57,260 --> 00:05:59,670 në kontekstin e programit më të gjerë. 109 00:05:59,670 --> 00:06:02,670 >> Por ne mund të ketë një tjetër program që ka shumë variabla. 110 00:06:02,670 --> 00:06:06,530 Dhe kjo nuk mund të jetë mjaft aq e lehtë për t'u përdorur printf 111 00:06:06,530 --> 00:06:10,120 në përpjekje për të vlerësuar se çfarë po ndodh për secilin prej këtyre variablave 112 00:06:10,120 --> 00:06:13,590 si programi është ekzekutuar. 113 00:06:13,590 --> 00:06:16,960 Ka një program që ekziston quajtur një program Rregullues. 114 00:06:16,960 --> 00:06:20,320 Në këtë rast, ajo që ne do të Përdorimi është debugger GNU, ose Gdb, 115 00:06:20,320 --> 00:06:24,260 që na lejon për të inspektuar të brendshme punimet e një programi në një shumë më të 116 00:06:24,260 --> 00:06:25,700 mënyrë të detajuar. 117 00:06:25,700 --> 00:06:28,810 >> Ne fakt mund të ekzekutojë GDB nga vija e komandës 118 00:06:28,810 --> 00:06:35,370 këtu thjesht duke shtypur GDB dhe Komanda që ne duam të korrigjoj. 119 00:06:35,370 --> 00:06:37,550 Në këtë rast, numërimin. 120 00:06:37,550 --> 00:06:41,650 Tani, në këtë rast, ne mund të shohim se ajo na sjell në një të shpejtë që thotë GDB. 121 00:06:41,650 --> 00:06:44,020 Dhe ne mund të vërtetë të ekzekutojë komandat të GDB 122 00:06:44,020 --> 00:06:48,260 që në fakt të fillojë ekzekutimin e program, të ndaluar atë në pika të caktuara, 123 00:06:48,260 --> 00:06:51,060 vlerësimin e variablave dhe inspektojë variablat që 124 00:06:51,060 --> 00:06:54,152 ekzistojnë në shtetin e programit në atë moment të veçantë, 125 00:06:54,152 --> 00:06:55,110 dhe kështu me radhë e kështu me radhë. 126 00:06:55,110 --> 00:06:57,240 Ajo siguron një shumë të pushtetit për ne. 127 00:06:57,240 --> 00:06:59,960 >> Por kjo ndodh vetëm në mënyrë që IDE CS50 edhe 128 00:06:59,960 --> 00:07:05,870 ofron një GUI ose një përdorues ndërfaqe për GDB se 129 00:07:05,870 --> 00:07:11,120 na lejon për të bërë këtë pa pasur nevojë ndërfaqe command line whatsoever 130 00:07:11,120 --> 00:07:13,560 apo fare madje. 131 00:07:13,560 --> 00:07:16,930 Mënyra se si unë mund të hyni në atë është duke përdorur butonin debug 132 00:07:16,930 --> 00:07:20,120 në krye të IDE CS50. 133 00:07:20,120 --> 00:07:24,280 Tani në të kaluarën, ajo që ne kemi shihet është se ne përdorim komandën 134 00:07:24,280 --> 00:07:27,660 line për të përpilojnë dhe pastaj të drejtuar një program. 135 00:07:27,660 --> 00:07:29,790 >> Butoni debug bën të dy këto hapa. 136 00:07:29,790 --> 00:07:34,380 Por ajo gjithashtu do të sjellë deri tab Rregullues më shumë të drejtë 137 00:07:34,380 --> 00:07:38,280 që na lejon për të inspektuar një shumëllojshmëri i pronave të programit 138 00:07:38,280 --> 00:07:40,500 siç është ekzekutuar. 139 00:07:40,500 --> 00:07:44,280 Nëse unë klikoni debug, në këtë rast, ajo do të sjellë deri 140 00:07:44,280 --> 00:07:48,230 një skedë të re në tastierë dritare në fund fare. 141 00:07:48,230 --> 00:07:51,160 >> Dhe ju mund të shihni se kjo skedë ka disa informacione në shumë të lartë. 142 00:07:51,160 --> 00:07:52,670 Dhe ne kryesisht mund ta injorojë këtë. 143 00:07:52,670 --> 00:07:54,800 Por një nga gjërat që ne duam në njoftim 144 00:07:54,800 --> 00:07:57,170 është se ajo nxjerr e njëjta gjë që kemi 145 00:07:57,170 --> 00:08:03,000 do të marrë në qoftë se ne u përpoq për të kandiduar të bërë në programi C në dritaren e terminalit. 146 00:08:03,000 --> 00:08:06,230 >> Këtu, ne mund të shohim se është duke tingëllimë, dhe ajo ka një shumëllojshmëri të flamujve, 147 00:08:06,230 --> 00:08:12,660 dhe ajo është e përpiluar dosjen tonë count.c, e cila ishte tab zgjedhur në atë kohë 148 00:08:12,660 --> 00:08:15,100 që unë goditi debug. 149 00:08:15,100 --> 00:08:18,010 Pra, kjo është shumë e dobishme për shkak se tani duke përdorur këtë buton debug, 150 00:08:18,010 --> 00:08:23,280 ne të njëjtën kohë mund të hartojnë dhe pastaj ekzekutuar programin që ne në fakt 151 00:08:23,280 --> 00:08:24,460 duan për të kandiduar. 152 00:08:24,460 --> 00:08:27,880 >> Një nga flamujve që është i rëndësishëm, në këtë rast, 153 00:08:27,880 --> 00:08:30,190 ne kemi qenë në fakt duke përdorur për kohë të gjatë 154 00:08:30,190 --> 00:08:32,450 por edhe vetëm bëri disa dorë duke përshëndetur [e padëgjueshme], e cila 155 00:08:32,450 --> 00:08:33,820 është kjo një e drejtë këtu. 156 00:08:33,820 --> 00:08:35,790 Në tingëllim, ajo thotë -ggdb3. 157 00:08:35,790 --> 00:08:38,570 158 00:08:38,570 --> 00:08:41,250 Në këtë rast, ajo që ne jemi thënë tingëllim, përpilues tonë, 159 00:08:41,250 --> 00:08:43,820 është se ne duam të hartojnë programin tonë. 160 00:08:43,820 --> 00:08:46,810 Por gjithashtu të sigurojë se çfarë janë quajtur informacion simbol 161 00:08:46,810 --> 00:08:50,940 në mënyrë që përpiluesit aktualisht ka qasje në një shumë e informacionit themelor 162 00:08:50,940 --> 00:08:52,610 përmbante brenda programit. 163 00:08:52,610 --> 00:08:55,260 >> Më konkretisht, numri e funksioneve që kam, 164 00:08:55,260 --> 00:08:58,000 emrat e këtyre funksioneve, variablat, tipet 165 00:08:58,000 --> 00:09:01,730 se këto variabla janë, dhe një shumëllojshmëri gjëra të tjera që ndihmojnë Rregullues 166 00:09:01,730 --> 00:09:04,350 të kryer veprimtarinë e saj. 167 00:09:04,350 --> 00:09:06,600 Tani ka diçka tjetër kjo është e rëndësishme të përmendet 168 00:09:06,600 --> 00:09:10,280 kur ne jemi duke diskutuar drejtimin nje program ne kete menyre. 169 00:09:10,280 --> 00:09:13,660 >> Vini re se ajo ka në fakt solli një skedë të re në tonë tastierë 170 00:09:13,660 --> 00:09:14,780 përgjatë poshtme. 171 00:09:14,780 --> 00:09:18,600 Ne nuk kemi për të bashkëvepruar drejtpërdrejt me dritaren e terminalit. 172 00:09:18,600 --> 00:09:21,420 Por kjo skedë të re është në fakt një dritare terminali. 173 00:09:21,420 --> 00:09:26,710 Ajo thjesht është specifik për drejtimin program që kemi krijuar. 174 00:09:26,710 --> 00:09:29,270 >> Vini re se në fund, në kombinim me disa dalje 175 00:09:29,270 --> 00:09:33,500 duke tingëllimë përpilues dhe GDB, të cilat ne mund të masë të madhe të injorojë, 176 00:09:33,500 --> 00:09:37,570 ai në fakt tregon prodhimin e programi ynë në fund fare. 177 00:09:37,570 --> 00:09:41,240 Tani është e rëndësishme që të kuptojnë se kjo dritare një fakt 178 00:09:41,240 --> 00:09:43,360 do të ju tregojnë Prodhimi nga programi juaj 179 00:09:43,360 --> 00:09:47,190 por gjithashtu mund të pranojë të dhëna për këtë program, si edhe. 180 00:09:47,190 --> 00:09:49,260 >> Kështu njoftim që thotë se ju lutem shkruani një numër, 181 00:09:49,260 --> 00:09:53,050 e cila është e njëjta prodhimi që kemi pasur kishte në dritaren e terminalit para. 182 00:09:53,050 --> 00:09:55,510 Por është e paraqitur tani në këtë skedë të re. 183 00:09:55,510 --> 00:09:56,550 Unë mund të dhëna një numër. 184 00:09:56,550 --> 00:10:00,900 Dhe kjo do të në fakt funksion si ne presim 185 00:10:00,900 --> 00:10:05,890 duke na treguar debug tonë, prodhimi, prodhimi që mund të jetë buggy, 186 00:10:05,890 --> 00:10:07,010 siç e kam parë më parë. 187 00:10:07,010 --> 00:10:10,460 Dhe në fund të fund, atë në fakt ka disa dalje të tjera 188 00:10:10,460 --> 00:10:14,550 nga BPV-së vetëm duke thënë se ky program ka përfunduar. 189 00:10:14,550 --> 00:10:16,655 >> Tani si ju pa në këtë drejtuar veçanti nëpërmjet, 190 00:10:16,655 --> 00:10:19,370 kjo nuk ishte veçanërisht dobishme sepse edhe 191 00:10:19,370 --> 00:10:23,740 edhe pse kishim ardhur menu Rregullues lart, kjo ishte ende një program running. 192 00:10:23,740 --> 00:10:26,790 Në asnjë moment e bëri atë të vërtetë pauzë ekzekutimin për ne 193 00:10:26,790 --> 00:10:30,767 të jetë në gjendje për të inspektuar të gjitha ndryshoret përmbante brenda. 194 00:10:30,767 --> 00:10:32,850 Ka diçka tjetër që ne duhet të bëjmë në mënyrë që 195 00:10:32,850 --> 00:10:36,910 për të marrë GDB të njohin se ne duam për pushim ekzekutimin e programit 196 00:10:36,910 --> 00:10:42,820 dhe jo vetëm të lejojë që ajo të vazhdojë normalisht si ne do në çdo rast tjetër. 197 00:10:42,820 --> 00:10:45,530 >> Në mënyrë që të pauzë ekzekutimin, në një linjë të caktuar, 198 00:10:45,530 --> 00:10:47,830 ne kemi nevojë për të krijuar atë që është quhet një pikë pushim. 199 00:10:47,830 --> 00:10:52,670 Dhe një pikë pushim është krijuar shumë lehtë në këtë CS50 IDE duke marrë miun tuaj 200 00:10:52,670 --> 00:10:57,090 dhe duke klikuar direkt në të majtë e disa numër specifik linjë. 201 00:10:57,090 --> 00:10:59,920 Sapo kam bërë këtë, një kuqe dot duket, e cila tregon 202 00:10:59,920 --> 00:11:02,300 se kjo linjë është tani një pikë pushim. 203 00:11:02,300 --> 00:11:07,540 >> Dhe herën tjetër që unë të drejtuar GDB, atë do të ndalojë ekzekutimin në atë pikë pushim 204 00:11:07,540 --> 00:11:10,280 kur ajo të arrijë në atë linjë të kodit. 205 00:11:10,280 --> 00:11:12,230 Tani kjo është një e rëndësishme gjë për të realizuar 206 00:11:12,230 --> 00:11:16,140 se kjo nuk është domosdoshmërisht rast se çdo linjë e kodit 207 00:11:16,140 --> 00:11:17,880 në fakt është i arritshëm. 208 00:11:17,880 --> 00:11:23,780 Nëse unë do të krijojë një funksion këtu, për f-- example-- pavlefshëm 209 00:11:23,780 --> 00:11:31,230 dhe vetëm të bëjë një linjë të shtypura here-- përshëndetje world-- në qoftë se unë nuk e quaj këtë funksion, 210 00:11:31,230 --> 00:11:34,770 ajo do të jetë rasti që, në qoftë se kam vendosur një pikë pushim këtu, 211 00:11:34,770 --> 00:11:36,220 funksioni nuk do të quhet. 212 00:11:36,220 --> 00:11:38,310 Dhe për këtë arsye, kjo pikë e veçantë pushim 213 00:11:38,310 --> 00:11:43,040 kurrë nuk do të të bëj një pauzë në fakt ekzekutimi i programit. 214 00:11:43,040 --> 00:11:48,020 >> Pra, le të thonë se unë krijoj saktë një pikë pushim në një linjë e kodit 215 00:11:48,020 --> 00:11:50,340 që në të vërtetë do të ekzekutohet. 216 00:11:50,340 --> 00:11:53,470 Tani, në këtë rast, kjo është Linja e parë në funksion kryesor. 217 00:11:53,470 --> 00:11:56,630 Pra, ajo me siguri do të jetë rasti që, sa më shpejt që unë të fillojë ekzekutimin, 218 00:11:56,630 --> 00:11:58,580 vija e parë do të arrihet. 219 00:11:58,580 --> 00:12:00,230 GDB do të bëj një pauzë ekzekutimin. 220 00:12:00,230 --> 00:12:04,100 Dhe atëherë, unë do të jetë në gjendje të ndërveprojnë me Rregullues. 221 00:12:04,100 --> 00:12:08,480 >> Ju mund të vendosni linja të shumta si breakpoints, në qoftë se ju do të donte. 222 00:12:08,480 --> 00:12:11,365 Ne gjithashtu mund të krijojë një linjë të lart këtu në këtë segment të kodit 223 00:12:11,365 --> 00:12:12,490 që kurrë nuk do të arrihet. 224 00:12:12,490 --> 00:12:14,744 Dhe ne mund të rregulloni një më poshtë. 225 00:12:14,744 --> 00:12:16,660 Arsyeja që ne do duam të bëjmë këtë, ne do të 226 00:12:16,660 --> 00:12:19,119 shkojnë në pak më shumë detaje në një moment të vetëm. 227 00:12:19,119 --> 00:12:21,660 Pra tani për tani, më lejoni vetëm disable Këto pika të tjera pushim 228 00:12:21,660 --> 00:12:24,940 kështu që ne mund të shikojmë se çfarë ndodh kur unë kam një pushim të vetme 229 00:12:24,940 --> 00:12:27,650 pikë në programin tim. 230 00:12:27,650 --> 00:12:29,410 Unë kam bërë disa ndryshimet në këtë program. 231 00:12:29,410 --> 00:12:30,750 Kështu që kam nevojë për të shpëtuar atë. 232 00:12:30,750 --> 00:12:34,490 Unë do të klikoni debug në mënyrë që unë mund të të fillojë hartimin dhe pastaj 233 00:12:34,490 --> 00:12:36,880 Ekzekutimi i Rregullues. 234 00:12:36,880 --> 00:12:40,632 >> Ne do të shohim se, pas momenteve, të Linja që kemi zgjedhur si pushim 235 00:12:40,632 --> 00:12:43,360 Pika është theksuar në të verdhë. 236 00:12:43,360 --> 00:12:47,440 Ne gjithashtu mund të vëreni se në të drejtën e sipërme në panelin debug 237 00:12:47,440 --> 00:12:50,940 se ikona pauzë është kthyer në një ikonë të vogël të luajë. 238 00:12:50,940 --> 00:12:54,710 Kjo do të thotë se ne kemi pauzë ekzekutimit, në këtë rast të veçantë. 239 00:12:54,710 --> 00:12:57,840 Dhe goditur butonin Play do të të na lejojë të rifillojë ekzekutimin 240 00:12:57,840 --> 00:13:00,000 në atë pikë të veçantë. 241 00:13:00,000 --> 00:13:03,240 >> Vini re se ka disa të tjera butonat në dispozicion në këtë panel debug, 242 00:13:03,240 --> 00:13:04,220 gjithashtu. 243 00:13:04,220 --> 00:13:09,470 Hap mbi të, e cila lejon mua që të ekzekutuar se një linjë e kodit 244 00:13:09,470 --> 00:13:14,030 dhe hap mbi të atë vijë sa më një tjetër, i cili, në këtë rast, 245 00:13:14,030 --> 00:13:17,060 do të thotë se të printf Deklarata është ekzekutuar. 246 00:13:17,060 --> 00:13:22,310 Dhe kjo pastaj do të të bëj një pauzë Ekzekutimi on line 13, si kaq. 247 00:13:22,310 --> 00:13:25,090 >> Dhe ka edhe një hap në funksion, e cila 248 00:13:25,090 --> 00:13:28,950 është e dobishme në qoftë se unë kam krijuar të tjera Funksionet e gjetkë në kodin burimor. 249 00:13:28,950 --> 00:13:31,420 Dhe unë dua të futemi në ato funksione dhe jo 250 00:13:31,420 --> 00:13:33,050 ekzekutuar atë funksion si një e tërë. 251 00:13:33,050 --> 00:13:37,279 Por ne do të shohim më shumë në hapin në funksion në një moment të vetëm. 252 00:13:37,279 --> 00:13:40,320 Tani vini re disa gjëra të tjera që në fakt ekzistojnë brenda këtij paneli debug. 253 00:13:40,320 --> 00:13:44,110 >> Ne kemi këtë panel quajtur quajnë rafte, e cila na tregon 254 00:13:44,110 --> 00:13:45,300 ku pikërisht ne jemi. 255 00:13:45,300 --> 00:13:48,550 Në këtë rast, ne jemi brenda e funksionit kryesor. 256 00:13:48,550 --> 00:13:50,880 Script ynë është quajtur count.c. 257 00:13:50,880 --> 00:13:53,820 Dhe ne të ndodhë të jetë në line 13, kolona njëra, e cila 258 00:13:53,820 --> 00:13:58,950 është pikërisht ajo që rajoni theksuar e kodit burim tregon, po ashtu. 259 00:13:58,950 --> 00:14:02,435 >> Tani vini re se kjo gjithashtu tregon nën seksionin lokal ndryshueshme 260 00:14:02,435 --> 00:14:06,710 të gjithë nga variablat që ekzistojnë brenda këtij funksioni. 261 00:14:06,710 --> 00:14:08,930 Është e rëndësishme të theksohet se të gjithë variablat 262 00:14:08,930 --> 00:14:12,580 do të shfaqet në këtë variabël lokale Seksioni brenda një funksion, 263 00:14:12,580 --> 00:14:14,380 edhe para se ata janë të përcaktuara. 264 00:14:14,380 --> 00:14:19,160 Ne mund të shohim këtu se ne kemi një ndryshore quajtur num, ka një vlerë të paracaktuar prej 0, 265 00:14:19,160 --> 00:14:21,280 dhe kjo është e tipit int. 266 00:14:21,280 --> 00:14:24,110 >> Tani para se ne fakt nisja të gjitha këto variabla, 267 00:14:24,110 --> 00:14:26,685 ne nuk jemi domosdoshmërisht garantuara për të parë një vlerë prej 0. 268 00:14:26,685 --> 00:14:29,200 Dhe në varësi të ekzekutimeve të tjera që kanë kryer 269 00:14:29,200 --> 00:14:32,020 dhe gjendja e kujtesës tuaj, kur ju në të vërtetë të drejtuar këtë program, 270 00:14:32,020 --> 00:14:34,605 ju mund të gjeni se ju nuk shoh vlerat e 0 271 00:14:34,605 --> 00:14:36,550 dhe, në vend të kësaj, disa numra të tjerë të çmendur. 272 00:14:36,550 --> 00:14:38,390 >> Por mos u bëni merak për këtë. 273 00:14:38,390 --> 00:14:44,610 Kjo nuk do të jenë të rëndësishme deri ju në fakt nisja vlerën. 274 00:14:44,610 --> 00:14:49,630 Tani, në këtë rast, ne mund të shohim se Unë e kam zbatuar disa rezultate. 275 00:14:49,630 --> 00:14:52,131 Dhe unë jam, tani, ndaluar ekzekutimin. 276 00:14:52,131 --> 00:14:53,880 Por në këtë rast, çfarë Unë me të vërtetë dua të bëj 277 00:14:53,880 --> 00:14:58,060 është tani hap mbi këtë linjë e kodit në mënyrë që unë mund të vërtetë 278 00:14:58,060 --> 00:15:04,390 query përdorues për atë që int ne duam të përdorim në programin tonë. 279 00:15:04,390 --> 00:15:07,060 >> Tani, në këtë rast, kur I goditi hap mbi, njoftimin 280 00:15:07,060 --> 00:15:11,940 se Ndalo ose më mirë Resume Butoni ka ndryshuar në këtë butonin pushim 281 00:15:11,940 --> 00:15:14,022 sepse ky kod është në të vërtetë ekzekutimin. 282 00:15:14,022 --> 00:15:15,730 Çfarë po ndodh tani është se ajo është 283 00:15:15,730 --> 00:15:21,630 duke pritur për ne për të dhëna disa informacione si ne mund të shohim nga teksti tonë të prodhimit 284 00:15:21,630 --> 00:15:23,600 në fund shumë. 285 00:15:23,600 --> 00:15:25,787 >> Deri tani, kjo është Nuk ndaluar në fakt, 286 00:15:25,787 --> 00:15:28,620 Edhe pse ajo, lloj, duket të jetë për shkak se asgjë nuk po ndodh. 287 00:15:28,620 --> 00:15:32,360 Por kjo ndodh vetëm në mënyrë që në rasti im specifik on line 13, 288 00:15:32,360 --> 00:15:34,210 Unë jam duke pritur për të dhëna përdoruesi. 289 00:15:34,210 --> 00:15:39,130 Dhe kështu GDB nuk është në gjendje për të inspektuar një program si ajo po kandidon. 290 00:15:39,130 --> 00:15:43,370 >> Tani herën tjetër që unë të hyjë disa input-- kështu që unë do të hyjë në atë numër 5, 291 00:15:43,370 --> 00:15:46,140 siç e kemi parë në past-- hit Kthimi, dhe ne 292 00:15:46,140 --> 00:15:51,430 vini re se, menjëherë, pushimeve GDB dhe, përsëri, thekson linjë tjetër. 293 00:15:51,430 --> 00:15:55,320 Por vini re se tani, si një rezultat i tona inputting një vlerë, 294 00:15:55,320 --> 00:15:58,930 ne kemi përditësuar këtë vlerë brenda e variablave tona lokale, të cilat 295 00:15:58,930 --> 00:16:05,560 është shumë e dobishme të dinë saktësisht çka ky numër ishte në kujtesë. 296 00:16:05,560 --> 00:16:10,650 >> Tani unë mund të lejojë ky program për të vazhduar duke luajtur deri në fund të ekzekutimit të tij 297 00:16:10,650 --> 00:16:12,570 duke goditur Resume. 298 00:16:12,570 --> 00:16:16,410 Ne mund të shohim se shumë shpejt bën programi përfundojë ekzekutimin 299 00:16:16,410 --> 00:16:19,790 me e njëjtë prodhimi që kishte para, debugger mbyllet, 300 00:16:19,790 --> 00:16:23,170 dhe tani ky program ka ndaluar plotësisht. 301 00:16:23,170 --> 00:16:25,320 >> Unë tregojnë se vetëm për Qëllimet e parë atë 302 00:16:25,320 --> 00:16:27,280 ndodh kur ne fakt goditi Resume. 303 00:16:27,280 --> 00:16:30,640 Por ne fakt jemi duke shkuar për doni të shkoni përsëri në këtë program 304 00:16:30,640 --> 00:16:33,820 kështu që ne mund të përpiqemi për të korrigjoj pikërisht atë që po ndodh. 305 00:16:33,820 --> 00:16:37,980 Tani që unë jam duke përdorur Rregullues, unë mund Nuk duhet këto deklarata debug printf. 306 00:16:37,980 --> 00:16:43,860 >> Kështu që unë mund të hiqni ato si unë do të bëj tani vetëm për të shkuar përsëri në kodin tonë të thjeshtë 307 00:16:43,860 --> 00:16:45,950 se kemi pasur një moment më parë. 308 00:16:45,950 --> 00:16:48,790 Tani, kur unë të shpëtuar programit dhe ekzekutuar atë, 309 00:16:48,790 --> 00:16:53,700 ajo do të, përsëri, të shkojnë në atë fillestar pikën që kam pasur on line 11 pushim. 310 00:16:53,700 --> 00:16:57,700 Dhe unë do të jetë në gjendje për të inspektuar Variablat e mi si unë dua të bëj. 311 00:16:57,700 --> 00:17:00,695 >> Kjo ndodh pikërisht kështu që ky pjesë nuk është shumë interesante, 312 00:17:00,695 --> 00:17:04,364 Dhe unë e di se unë jam duke shkuar për të shtypur këtë deklaratë. 313 00:17:04,364 --> 00:17:05,280 Ju lutem shkruani një numër. 314 00:17:05,280 --> 00:17:08,099 Dhe pastaj, unë e di se unë jam duke shkuar të kërkojë nga shfrytëzuesi për atë numër të plotë. 315 00:17:08,099 --> 00:17:13,329 Pra, ndoshta, unë në fakt duan të lëvizin tim Point Break pak më poshtë. 316 00:17:13,329 --> 00:17:16,710 >> Ju mund të hiqni pika pushim duke klikuar, përsëri, direkt 317 00:17:16,710 --> 00:17:18,460 në të majtë të atij numri linjës. 318 00:17:18,460 --> 00:17:22,200 Që dot të kuqe do të zhduket, duke treguar që kjo pikë pushim është shkuar tani. 319 00:17:22,200 --> 00:17:24,780 Tani, në këtë rast, ekzekutimi ka qenë i ndaluar. 320 00:17:24,780 --> 00:17:27,770 Dhe kështu që nuk është në të vërtetë do të rinisë në këtë rast të veçantë. 321 00:17:27,770 --> 00:17:30,210 Por unë mund të vënë një pushim pika pak më vonë. 322 00:17:30,210 --> 00:17:33,880 >> Dhe kur unë tani rinisë time kod, ajo do të rifillojë dhe të tregoj 323 00:17:33,880 --> 00:17:36,190 pika e atë pikë pushim. 324 00:17:36,190 --> 00:17:37,374 Përsëri, unë goditi Resume. 325 00:17:37,374 --> 00:17:39,040 A nuk duket si diçka që po ndodh. 326 00:17:39,040 --> 00:17:41,450 Por kjo është për shkak tim Kodi është duke pritur për të dhëna. 327 00:17:41,450 --> 00:17:47,900 Unë do të hyjë në një numër 5, hit Enter, dhe tani Pika tjetër pushim do të jetë hit. 328 00:17:47,900 --> 00:17:50,570 >> Tani, në këtë rast, kjo është vija e kodit 329 00:17:50,570 --> 00:17:53,820 se, më parë, ne e dinim ka ndodhur të jetë buggy. 330 00:17:53,820 --> 00:17:57,590 Pra, le të vlerësojnë se çfarë ndodh në këtë pikë të veçantë në kohë. 331 00:17:57,590 --> 00:18:02,620 Kur një vijë është e theksuar, kjo Linja ende nuk është ekzekutuar. 332 00:18:02,620 --> 00:18:06,490 Pra, në këtë rast, ne mund të shohim që unë kam një numër, i cili 333 00:18:06,490 --> 00:18:11,610 Unë kam një numër të plotë të quajtur num që ka një vlerë 5. 334 00:18:11,610 --> 00:18:15,090 Dhe unë jam duke shkuar për të interpretojë disa math në këtë numër. 335 00:18:15,090 --> 00:18:20,130 >> Nëse unë hap mbi atë, ne mund të vini re se vlera për num 336 00:18:20,130 --> 00:18:23,780 ka ndryshuar në përputhje me aritmetike që ne kemi bërë në të vërtetë. 337 00:18:23,780 --> 00:18:26,810 Dhe tani që ne jemi brenda këtë për lak 338 00:18:26,810 --> 00:18:29,090 apo tani që për lak në vetvete është theksuar, 339 00:18:29,090 --> 00:18:32,450 ne shohim se ne kemi një të ri variabël i kërkova që 340 00:18:32,450 --> 00:18:35,370 do të përdoret në atë që për lak. 341 00:18:35,370 --> 00:18:38,230 >> Tani mos harroni para se unë përmendur se ndonjëherë ju jeni 342 00:18:38,230 --> 00:18:43,470 do të shohim një lloj të çmendur Numrat si default para atij numri 343 00:18:43,470 --> 00:18:45,530 apo se është e ndryshueshme në fakt nisur. 344 00:18:45,530 --> 00:18:49,040 Ne mund të shohim se pikërisht këtu në këtë variabël 345 00:18:49,040 --> 00:18:51,345 quajtur I, e cila nuk ka ende nuk është nisur 346 00:18:51,345 --> 00:18:53,560 në kohën e theksuar. 347 00:18:53,560 --> 00:18:57,070 Por ne mund të shohim se ajo ka disa numrin se ne nuk do të vërtetë të presin. 348 00:18:57,070 --> 00:18:57,620 >> Eshte ne rregull. 349 00:18:57,620 --> 00:18:59,661 Mos u shqetësoni në lidhje me të sepse ne kemi në fakt nuk 350 00:18:59,661 --> 00:19:04,970 nisur këtë numër deri sa unë hap mbi këtë linjë dhe vlerës 351 00:19:04,970 --> 00:19:08,560 Unë ka nisur me vlerën 1. 352 00:19:08,560 --> 00:19:11,400 Në mënyrë për të parë se kjo është në fakt rasti, le të hap mbi. 353 00:19:11,400 --> 00:19:14,420 Ne tani mund të shohim se kjo Linja është ekzekutuar. 354 00:19:14,420 --> 00:19:17,000 Dhe ne jemi tani duke theksuar kjo linjë printf. 355 00:19:17,000 --> 00:19:22,230 >> Dhe ne tani mund të shohim se si vlerat tona i I dhe 3 kanë ndryshuar me kalimin e kohës. 356 00:19:22,230 --> 00:19:26,450 Kjo është shumë e dobishme për të bërë, në fakt, është që të hap mbi linjat në mënyrë të përsëritur. 357 00:19:26,450 --> 00:19:30,480 Dhe ju mund të gjeni se çfarë në fakt ndodh brenda për lak tuaj 358 00:19:30,480 --> 00:19:33,660 dhe se çfarë ndodh me variabla brenda e që për lak 359 00:19:33,660 --> 00:19:39,200 si ajo ekzekutimit të programit ndodh një hap në një kohë. 360 00:19:39,200 --> 00:19:41,110 >> Tani në këtë pikë, unë rritur gjatë vetëm sa 361 00:19:41,110 --> 00:19:44,210 që unë tani jam në përfundim të programit tim. 362 00:19:44,210 --> 00:19:46,980 Nëse unë hap mbi atë, ajo do të në fakt të pushojë ekzekutimin 363 00:19:46,980 --> 00:19:48,860 siç e kemi parë në të kaluarën. 364 00:19:48,860 --> 00:19:52,110 Më lejoni të rinisni kjo, përsëri, kështu që që unë mund të nxjerr diçka tjetër jashtë, 365 00:19:52,110 --> 00:19:53,320 gjithashtu. 366 00:19:53,320 --> 00:19:55,350 >> Në këtë rast, ajo është tani duke i kërkuar mua, përsëri, 367 00:19:55,350 --> 00:19:57,100 për një numër, i cili Unë do të, përsëri, të hyjë. 368 00:19:57,100 --> 00:20:00,300 Por këtë herë, unë jam duke shkuar për të hyrë në një numër i madh mënyrë që për lak 369 00:20:00,300 --> 00:20:02,540 do të iterate më shumë herë. 370 00:20:02,540 --> 00:20:06,090 Në këtë rast, unë jam duke shkuar për të hyrë në një vlerë prej 11. 371 00:20:06,090 --> 00:20:08,390 >> Tani përsëri, sepse unë do të vendos një pikë pushim në linjë 15, 372 00:20:08,390 --> 00:20:10,490 ajo do të nxjerrë në pah këtë linjë. 373 00:20:10,490 --> 00:20:12,980 Ne mund të shohim se tonë Numri 11 është i saktë 374 00:20:12,980 --> 00:20:15,560 përfaqësuar në variablat tona lokale. 375 00:20:15,560 --> 00:20:22,460 Shkelën mbi atë, ne mund të tani të shikojnë se çfarë ndodh me vlerën tonë të i 376 00:20:22,460 --> 00:20:25,680 si ne të vazhdojë brenda e kjo për lak. 377 00:20:25,680 --> 00:20:31,960 Ajo merr incremented çdo herë kemi arritur në krye të se për lak. 378 00:20:31,960 --> 00:20:35,110 >> Tani një nga gjërat që e fuqisë të jenë të dobishme për të bërë gjatë ekzekutimit 379 00:20:35,110 --> 00:20:40,490 i këtij programi është për mua që në fakt ndryshojë variablave mes lumi për të parë 380 00:20:40,490 --> 00:20:42,450 çfarë ndodh me programin tim. 381 00:20:42,450 --> 00:20:46,540 Në këtë rast, unë mund të vërtetë klikoni dy herë vlerën. 382 00:20:46,540 --> 00:20:48,040 Vini re se të bëhet një fushë teksti. 383 00:20:48,040 --> 00:20:50,280 >> Tani unë mund të hyjë ndryshme vlerësojnë krejt 384 00:20:50,280 --> 00:20:55,700 për të parë se si programi im sillet kur unë kam ndryshuar këtë variabël. 385 00:20:55,700 --> 00:20:59,560 Tani, në këtë rast, e ndryshueshme Unë tani përmban vlerën 10. 386 00:20:59,560 --> 00:21:02,810 Por programi është ende ndaluar në ekzekutim. 387 00:21:02,810 --> 00:21:07,610 Kur unë hap gjatë, unë shoh se Unë vlerë, që kam hyrë si 10, 388 00:21:07,610 --> 00:21:12,170 është jo më të madhe se vlera e num, që menjëherë shkakton për lak 389 00:21:12,170 --> 00:21:14,240 për të ndaluar ekzekutimin. 390 00:21:14,240 --> 00:21:16,210 >> Tani që nuk është e vetmja arsyeja pse ju do të 391 00:21:16,210 --> 00:21:19,450 dëshironi të modifikoni ndryshueshme në vend. 392 00:21:19,450 --> 00:21:22,210 Ju në fakt mund të dëshironi në përpjekje për të ndryshuar atë në mënyrë 393 00:21:22,210 --> 00:21:24,590 që ju mund të vazhdojë ekzekutimi i një lak 394 00:21:24,590 --> 00:21:27,370 ose në mënyrë që ju mund të modifikoj disa vlera para tij 395 00:21:27,370 --> 00:21:32,630 arrin një grup të veçantë të aritmetikës se ju jeni gati për të kryer. 396 00:21:32,630 --> 00:21:36,210 >> Pra, tani që ne në fakt të ndryshojë Vlera e unë si programi u ekzekutimin, 397 00:21:36,210 --> 00:21:39,540 ai shkaktoi për lak për të lënë para kohe për shkak, të gjithë një e papritur, unë 398 00:21:39,540 --> 00:21:42,770 ka ndodhur të jetë më e madhe se vlera e e num, do të thotë se ajo për lak 399 00:21:42,770 --> 00:21:45,410 e nevojshme nuk do të ekzekutohet. 400 00:21:45,410 --> 00:21:48,780 Më tej, ajo ka ndodhur të jetë rast se kemi ndryshuar vlerën e I 401 00:21:48,780 --> 00:21:53,270 kur u theksua linja 17, e cila ishte pika në kohë 402 00:21:53,270 --> 00:21:56,280 se për ekzekutim loop ishte në fakt duke u vlerësuar. 403 00:21:56,280 --> 00:22:00,210 >> Po të kisha ndryshuar vlerën e Unë në një linjë të ndryshme, të themi 19, 404 00:22:00,210 --> 00:22:03,360 ne do të kemi parë ndryshe Sjellja sepse linja 19 do 405 00:22:03,360 --> 00:22:08,310 kanë ekzekutuar para lak kusht është rivlerësuar. 406 00:22:08,310 --> 00:22:11,900 Tani në këtë pikë, unë jam, përsëri, në fund të këtij programi. 407 00:22:11,900 --> 00:22:15,707 Dhe unë mund të lejojë që kjo të vazhdojë për lejojë që programi im për të lënë të natyrshme. 408 00:22:15,707 --> 00:22:18,290 Por ka disa gjëra që janë të rëndësishme për të marrë larg 409 00:22:18,290 --> 00:22:19,960 nga ky diskutim të veçantë. 410 00:22:19,960 --> 00:22:22,490 Ju duhet për të vlerësuar supozimet tuaja 411 00:22:22,490 --> 00:22:24,710 për mënyrën se si kodi duhet të sillet. 412 00:22:24,710 --> 00:22:28,220 Çdo herë që ju mendoni se disa pjesë Kodi i dini ndodh për të punuar, 413 00:22:28,220 --> 00:22:30,940 që mund të jetë një flamur të kuq për të shkuar mbrapa dhe të vlerësojë, dhe të jetë i sigurt 414 00:22:30,940 --> 00:22:33,470 se supozimin tuaj të se si kodi është operativ 415 00:22:33,470 --> 00:22:38,290 është në fakt e vërtetë se si është shprehur në kodin tuaj burim. 416 00:22:38,290 --> 00:22:41,300 >> Por edhe më shumë për pikë ishte, kur ne jemi duke përdorur Rregullues, 417 00:22:41,300 --> 00:22:43,920 ju mund të vënë breakpoints në linja të ndryshme të kodit, 418 00:22:43,920 --> 00:22:48,110 e cila do të shkaktojë Rregullues të pauzë ekzekutimin në secilin nga këto linja 419 00:22:48,110 --> 00:22:52,210 kështu që ju mund të vlerësoni kujtesës ose madje edhe të ndryshoni atë në vend. 420 00:22:52,210 --> 00:22:55,630 Dhe përsëri, mos harroni se ju mund të krijuar breakpoints të shumta në mënyrë që të 421 00:22:55,630 --> 00:23:00,390 mund të rifillojë ekzekutimin, kaloni mbi pjesë të mëdha të kodit, 422 00:23:00,390 --> 00:23:04,790 dhe kjo do të të bëj një pauzë automatikisht në pikën e ardhshme pushim. 423 00:23:04,790 --> 00:23:07,760 >> Nuk është në fakt më të avancuar tiparet e Rregullues, po ashtu. 424 00:23:07,760 --> 00:23:10,170 Por ne do të duhet t'i referohemi ju për disa video pasuese 425 00:23:10,170 --> 00:23:14,090 në mënyrë që me të vërtetë të vë në lojë përveç si për të përdorur këto funksione të veçanta. 426 00:23:14,090 --> 00:23:15,990 Tani për tani, ju falenderoj shumë për të shikuar. 427 00:23:15,990 --> 00:23:18,080 Dhe debugging mirë fat.