1 00:00:00,000 --> 00:00:05,640 2 00:00:05,640 --> 00:00:06,830 >> Doug LLOYD: All GDB dritt. 3 00:00:06,830 --> 00:00:08,480 X'inhu eżattament? 4 00:00:08,480 --> 00:00:11,310 Allura GDB, li stands għall-Debugger GNU, 5 00:00:11,310 --> 00:00:15,040 hija għodda verament tal-biża li nistgħu jużaw biex tgħinna debug programmi tagħna, 6 00:00:15,040 --> 00:00:18,210 jew issir taf fejn l-affarijiet huma tmur ħażina fil-programmi tagħna. 7 00:00:18,210 --> 00:00:22,590 GDB huwa amazingly qawwija, iżda l-output u l-interazzjoni magħha 8 00:00:22,590 --> 00:00:23,830 tista 'tkun ftit cryptic. 9 00:00:23,830 --> 00:00:28,210 Huwa ġeneralment għodda linja ta 'kmand, u din tista tarmi ħafna ta 'messaġġi fi inti. 10 00:00:28,210 --> 00:00:31,144 U jista tip ta 'diffiċli biex parse eżattament x'inhu għaddej. 11 00:00:31,144 --> 00:00:33,560 Fortunatament, aħna ħadt passi li tiffissa din il-problema għalik 12 00:00:33,560 --> 00:00:36,281 kif inti taħdem permezz CS50. 13 00:00:36,281 --> 00:00:39,030 Jekk m'intix tuża l-grafika debugger, li kollega tiegħi Dan 14 00:00:39,030 --> 00:00:41,570 Armandarse mitkellma pjuttost ftit dwar fil-video li 15 00:00:41,570 --> 00:00:44,740 għandu jkun minn hawn dritt issa, jista 'jkollok bżonn 16 00:00:44,740 --> 00:00:48,270 li jużaw dawn linja tal-kmand għodod li jaħdmu ma 'GDB. 17 00:00:48,270 --> 00:00:51,250 Jekk int taħdem fil-CS50 IDE, inti m'għandekx bżonn li tagħmel dan. 18 00:00:51,250 --> 00:00:53,550 Imma jekk int ma jaħdmu fil-IDE CS50, 19 00:00:53,550 --> 00:00:55,750 forsi permezz ta 'verżjoni tal CS50 Appliance, 20 00:00:55,750 --> 00:00:58,860 jew Linux ieħor operattiva sistema ma GDB installat fuqu, 21 00:00:58,860 --> 00:01:00,980 jista 'jkollok bżonn li tuża dawn l-għodod linja tal-kmand. 22 00:01:00,980 --> 00:01:02,860 >> U peress li inti tista għandek tagħmel dan, huwa 23 00:01:02,860 --> 00:01:06,280 utli biss biex wieħed jifhem kif GDB xogħlijiet mill-linja tal-kmand. 24 00:01:06,280 --> 00:01:09,650 Iżda għal darb'oħra, jekk int tuża l-IDE CS50, inti 25 00:01:09,650 --> 00:01:15,400 jistgħu jużaw l-debugger grafika li hija mibnija fis-IDE. 26 00:01:15,400 --> 00:01:18,750 Allura biex tikseb l-affarijiet għaddejjin ma GDB, biex jibdew il-debugging 27 00:01:18,750 --> 00:01:21,220 proċess ta 'partikolari programm, inti kollha bżonn tagħmel 28 00:01:21,220 --> 00:01:23,810 huwa tat-tip GDB segwita mill-isem tal-programm. 29 00:01:23,810 --> 00:01:28,620 Għalhekk, per eżempju, jekk program tiegħek hija hello, inti tip bonjour GDB. 30 00:01:28,620 --> 00:01:31,210 >> Meta inti tagħmel dan, int ser biex tiġbed l-ambjent GDB. 31 00:01:31,210 --> 00:01:33,800 Your pront se jinbidlu, u minflok ma 'dak li normalment 32 00:01:33,800 --> 00:01:35,841 huwa meta inti tip affarijiet lejn il-ls line-- kmand, 33 00:01:35,841 --> 00:01:38,115 cd-- kollha ta 'tiegħek tipiċi Linux jikkmanda, fil-pront tiegħek 34 00:01:38,115 --> 00:01:42,200 ser tinbidel għal, probabbilment, xi ħaġa bħal parentesi GDB parentesi. 35 00:01:42,200 --> 00:01:46,630 C'est GDB pront ġdida tiegħek, għaliex int ġewwa l-ambjent GDB. 36 00:01:46,630 --> 00:01:49,830 Ladarba ġewwa ta 'dak l-ambjent, hemm żewġ jikkmanda ewlenin 37 00:01:49,830 --> 00:01:52,290 li inti probabilment tuża fl-ordni li ġejja. 38 00:01:52,290 --> 00:01:55,200 >> L-ewwel huwa b, li huwa qasir għall break. 39 00:01:55,200 --> 00:01:58,690 U wara inti tip b, inti tipikament tip l-isem ta 'funzjoni, 40 00:01:58,690 --> 00:02:01,040 jew jekk jiġri li tkun taf madwar liema linja numru 41 00:02:01,040 --> 00:02:04,100 programm tiegħek qed tibda li jaġixxu ftit stramb, 42 00:02:04,100 --> 00:02:06,370 inti tista tip linja Numru hemm ukoll. 43 00:02:06,370 --> 00:02:09,660 Liema b, jew break, ma huwa jippermetti program tiegħek 44 00:02:09,660 --> 00:02:13,270 jiddekorri sa ċertu punt, jiġifieri, l-isem tal-funzjoni 45 00:02:13,270 --> 00:02:15,880 li inti tispeċifika jew il-linja numru li inti tispeċifika. 46 00:02:15,880 --> 00:02:18,590 >> U f'dak il-punt, hija se friża eżekuzzjoni. 47 00:02:18,590 --> 00:02:21,670 Din hija ħaġa verament tajba, għaliex ladarba eżekuzzjoni ġiet iffriżata, 48 00:02:21,670 --> 00:02:25,214 inti tista 'tibda bil-mod ħafna pass permezz tal-programm tiegħek. 49 00:02:25,214 --> 00:02:28,130 Tipikament, jekk inti kont qed taħdem programmi tiegħek, dawn qed pretty qasir. 50 00:02:28,130 --> 00:02:31,250 Normalment, inti tip dot slash x'ikun l-isem tal-programm tiegħek huwa, hit Ikteb, 51 00:02:31,250 --> 00:02:33,470 u qabel ma tkun tista blink, tiegħek programm huwa diġà lest. 52 00:02:33,470 --> 00:02:36,620 Mhuwiex verament ħafna ħin biex jippruvaw u ċifra barra dak li għaddej ħażin. 53 00:02:36,620 --> 00:02:40,920 Allura huwa verament li tkun kapaċi jrażżan affarijiet stabbiliti billi jiġi stabbilit punt tal-qasma bil b, 54 00:02:40,920 --> 00:02:43,040 u mbagħad titjib fil. 55 00:02:43,040 --> 00:02:46,169 >> Imbagħad ladarba inti ħadthom stabbiliti break tiegħek punt, inti tista 'tmexxi l-programm. 56 00:02:46,169 --> 00:02:47,960 U jekk għandek xi argumenti kmand linja, 57 00:02:47,960 --> 00:02:51,610 inti tispeċifika lilhom hawnhekk, mhux meta inti tip GDB isem tal-programm tiegħek. 58 00:02:51,610 --> 00:02:55,980 Inti tispeċifika l-linja tal-kmand argumenti billi jieħdu r, jew run, 59 00:02:55,980 --> 00:03:00,270 u mbagħad ikun x'ikun linja tal-kmand argumenti għandek bżonn ġewwa tal-programm tiegħek. 60 00:03:00,270 --> 00:03:03,510 Hemm numru ta 'oħrajn verament kmandi importanti u utli 61 00:03:03,510 --> 00:03:04,970 ġewwa tal-ambjent PGD. 62 00:03:04,970 --> 00:03:07,540 So let me biss malajr jmorru fuq xi wħud minnhom. 63 00:03:07,540 --> 00:03:11,320 >> L-ewwel huwa n, li huwa qasir għall jmiss, u inti tista tip li jmiss minflok n, 64 00:03:11,320 --> 00:03:12,304 kemm tkun taħdem. 65 00:03:12,304 --> 00:03:13,470 U huwa biss l-shorthand. 66 00:03:13,470 --> 00:03:17,540 U kif inti probabilment ħadthom diġà gotten użati biex, tkun tista 'affarijiet tip 67 00:03:17,540 --> 00:03:20,520 iqsar huwa ġeneralment aħjar. 68 00:03:20,520 --> 00:03:24,100 U dak li se tagħmel huwa li ser pass 'il quddiem wieħed blokk ta' kodiċi. 69 00:03:24,100 --> 00:03:26,170 Allura dan ser jimxu 'l quddiem sakemm sejħa funzjoni. 70 00:03:26,170 --> 00:03:28,350 U allura minflok għaddasa fis dik il-funzjoni 71 00:03:28,350 --> 00:03:33,130 u li jmorru kollha permezz ta 'li l-funzjonijiet kodiċi, hija biss se jkollu l-funzjoni. 72 00:03:33,130 --> 00:03:34,400 >> Il-funzjoni se tkun imsejħa. 73 00:03:34,400 --> 00:03:35,733 Hija se tagħmel dak kollu li x-xogħol tagħha hu. 74 00:03:35,733 --> 00:03:38,870 Huwa ser jerġa valur li il-funzjoni li hija imsejħa. 75 00:03:38,870 --> 00:03:42,490 U allura inti ser timxi fuq il- linja li jmiss ta 'dik il-funzjoni sejħa. 76 00:03:42,490 --> 00:03:44,555 Jekk inti tixtieq li pass ġewwa tal-funzjoni, 77 00:03:44,555 --> 00:03:46,430 minflok sempliċiment li dan iwettaq, speċjalment 78 00:03:46,430 --> 00:03:50,004 jekk taħseb li l-problema jista jinsabu ġewwa ta 'dik il-funzjoni, 79 00:03:50,004 --> 00:03:52,670 inti tista ', naturalment, sett waqfa punt ġewwa ta 'dik il-funzjoni. 80 00:03:52,670 --> 00:03:57,820 Jew jekk int diġà għaddej, inti tista użu s pass 'il quddiem wieħed linja tal-kodiċi. 81 00:03:57,820 --> 00:04:01,170 >> Allura dan se tintervjeni u adsa fis-funzjonijiet, 82 00:04:01,170 --> 00:04:04,750 minflok sempliċiment għandek l-tesegwixxi u jkompli fuq fil-funzjoni 83 00:04:04,750 --> 00:04:07,380 li int fl għal debugging. 84 00:04:07,380 --> 00:04:09,870 Jekk inti qatt trid tkun taf il-valur ta 'varjabbli, 85 00:04:09,870 --> 00:04:12,507 inti tista tip p, jew Stampa, u mbagħad l-isem varjabbli. 86 00:04:12,507 --> 00:04:15,090 U li se jistampa lilek, ġewwa tal-ambjent GDB, 87 00:04:15,090 --> 00:04:19,110 l-isem tal-varjabbli, li you-- skuża me-- il-valur tal-varjabbli 88 00:04:19,110 --> 00:04:20,064 li inti stajt msemmija. 89 00:04:20,064 --> 00:04:23,230 Jekk inti trid tkun taf l-valuri ta 'kull aċċessibbli varjabbli lokali minn fejn 90 00:04:23,230 --> 00:04:25,970 inti bħalissa huma fis tiegħek programm, inti tista tip lokal info. 91 00:04:25,970 --> 00:04:28,332 Huwa ħafna aktar malajr milli ittajpjar p u mbagħad tkun xi tkun, 92 00:04:28,332 --> 00:04:30,540 elenkar out kollha tal- varjabbli li inti taf jeżistu. 93 00:04:30,540 --> 00:04:34,370 Tista 'tip lokal info, u se jistampa kollox għalik. 94 00:04:34,370 --> 00:04:37,770 Li jmiss up huwa bt, li huwa qosra għall Back traċċa. 95 00:04:37,770 --> 00:04:41,680 Issa, ġeneralment, speċjalment kmieni fil-CS50, 96 00:04:41,680 --> 00:04:44,450 inti mhux ser verament ikollhom okkażjoni għall-użu bt, jew Back Jittraċċaw, 97 00:04:44,450 --> 00:04:47,860 għaliex int ma jkollhom funzjonijiet li jsejħu funzjonijiet oħra. 98 00:04:47,860 --> 00:04:50,450 >> Inti jista 'jkollok prinċipali sejħa a funzjoni, iżda li probabbilment dan. 99 00:04:50,450 --> 00:04:53,199 Inti ma għandekx li funzjoni oħra sejħa funzjoni oħra, li 100 00:04:53,199 --> 00:04:54,880 jitlob funzjoni oħra, u l-bqija. 101 00:04:54,880 --> 00:04:57,550 Imma kif programmi tiegħek nikseb aktar kumplessi, u partikolarment 102 00:04:57,550 --> 00:05:00,290 meta tibda taħdem ma recursion, traċċa lura 103 00:05:00,290 --> 00:05:05,150 tista 'tkun mod verament utli biex tavżak tip ta 'nikseb xi kuntest ta fejn 104 00:05:05,150 --> 00:05:06,460 I am fil-programm tiegħi. 105 00:05:06,460 --> 00:05:10,590 Allura ngħid li inti stajt bil-miktub kodiċi tiegħek, u inti taf li ewlieni sejħiet funzjoni 106 00:05:10,590 --> 00:05:14,720 f, li jitlob funzjoni g, li jitlob funzjoni h. 107 00:05:14,720 --> 00:05:17,650 Allura għandna diversi saffi ta 'nesting jiġri hawn. 108 00:05:17,650 --> 00:05:19,440 >> Jekk int ġewwa tal ambjent GDB tiegħek, 109 00:05:19,440 --> 00:05:21,640 u inti taf ġewwa tiegħek tal h, imma tinsa 110 00:05:21,640 --> 00:05:27,210 dwar dak ltqajna inti fejn inti are-- inti tista tip BT, jew traċċa lura, 111 00:05:27,210 --> 00:05:32,370 u se jistampa h, g, prinċipali f, flimkien xi informazzjoni oħra, li 112 00:05:32,370 --> 00:05:35,984 jagħtik ħjiel li, prinċipali OK imsejħa f, f imsejħa g, g h imsejħa, 113 00:05:35,984 --> 00:05:37,900 u li fejn I bħalissa am fil-programm tiegħi. 114 00:05:37,900 --> 00:05:41,380 Allura jista 'jkun verament utli, speċjalment bħala l-cryptic-negozju tal GDB 115 00:05:41,380 --> 00:05:45,667 isir ftit kbira, biex issir taf eżattament fejn l-affarijiet huma. 116 00:05:45,667 --> 00:05:48,500 Fl-aħħarnett, meta program tiegħek isir, jew meta qed isir debugging dan 117 00:05:48,500 --> 00:05:50,125 u inti tixtieq li pass bogħod mill-ambjent GDB, 118 00:05:50,125 --> 00:05:51,940 dan jgħin biex tkun taf kif toħroġ minnha. 119 00:05:51,940 --> 00:05:55,500 Tista 'tip q, jew Nieqaf, li toħroġ. 120 00:05:55,500 --> 00:05:59,220 Issa, qabel video lum I ppreparat programm Buggy 121 00:05:59,220 --> 00:06:03,900 imsejħa buggy1, li jiena ikkumpilata minn fajl magħrufa bħala buggy1.c. 122 00:06:03,900 --> 00:06:06,500 Kif inti tista 'tistenna, dan programm huwa fil-fatt Buggy. 123 00:06:06,500 --> 00:06:08,990 Xi ħaġa tmur ħażin meta nipprova u run. 124 00:06:08,990 --> 00:06:13,014 Issa, sfortunatament, I involontarjament imħassar fajl buggy1.c tiegħi, 125 00:06:13,014 --> 00:06:15,930 dan sabiex għalija biex insemmu x'inhu għaddej ħażin ma dan il-programm, 126 00:06:15,930 --> 00:06:18,770 Jien ser jkollhom jużaw GDB tip ta 'bl-addoċċ, jippruvaw 127 00:06:18,770 --> 00:06:22,372 biex jinnaviga permezz dan il-programm għall insemmu eżattament x'inhu għaddej ħażin. 128 00:06:22,372 --> 00:06:24,580 Iżda bl-użu biss l-għodod konna diġà tgħallmu dwar, 129 00:06:24,580 --> 00:06:27,700 nistgħu figura pretty ħafna eżattament dak li hu. 130 00:06:27,700 --> 00:06:30,740 Mela ejja ras fuq CS50 IDE u agħti ħarsa. 131 00:06:30,740 --> 00:06:33,155 OK, hekk aħna qed hawn fil tiegħi CS50 ambjent IDE, 132 00:06:33,155 --> 00:06:35,697 u jien ser zoom ftit sabiex inti tista 'tara ftit aktar. 133 00:06:35,697 --> 00:06:38,530 Fil tieqa terminal tiegħi, jekk I lista il-kontenut tal direttur kurrenti tiegħi 134 00:06:38,530 --> 00:06:41,250 ma ls, aħna ser tara li I jkollhom koppja ta 'fajls sors 135 00:06:41,250 --> 00:06:44,982 hawn, inkluż il- diskuss qabel buggy1. 136 00:06:44,982 --> 00:06:46,940 X'inhuma eżattament tmur fuq meta Nipprova u run buggy1. 137 00:06:46,940 --> 00:06:47,773 Well ejja nsib. 138 00:06:47,773 --> 00:06:52,510 I tip dot mmejla, Buggy, u I hit Ikteb. 139 00:06:52,510 --> 00:06:53,670 >> Difetti segmentazzjoni. 140 00:06:53,670 --> 00:06:55,000 Li mhux tajjeb. 141 00:06:55,000 --> 00:06:57,180 Jekk inti recall, a tort segmentazzjoni tipikament 142 00:06:57,180 --> 00:07:01,540 iseħħ meta aħna jkollhom aċċess memorja li aħna mhux qed jitħallew għall-mess. 143 00:07:01,540 --> 00:07:03,820 Imxejna b'xi laħaq barra mill-limiti 144 00:07:03,820 --> 00:07:05,995 ta 'dak il-programm, il- kompilatur, tatna. 145 00:07:05,995 --> 00:07:08,310 U hekk diġà li l- clue li jżomm fil-toolbox 146 00:07:08,310 --> 00:07:10,660 kif aħna jibdew il-proċess debugging. 147 00:07:10,660 --> 00:07:13,620 Xi ħaġa marret ħażin għal ftit hawn. 148 00:07:13,620 --> 00:07:15,935 >> Dritt kollox, Mela ejja nibdew l-ambjent GDB 149 00:07:15,935 --> 00:07:19,030 u ara jekk nistgħu insemmu x'inhi eżattament l-problema hija. 150 00:07:19,030 --> 00:07:21,674 Jien ser ċar l-iskrin tiegħi, u jien ser tip GDB 151 00:07:21,674 --> 00:07:24,340 għal darb'oħra, jidhlu fl-ambjent GDB, u l-isem tal-programm 152 00:07:24,340 --> 00:07:27,450 li nixtieq li debug, buggy1. 153 00:07:27,450 --> 00:07:30,182 Nikbru messaġġ ftit, qari simboli mill buggy1, isir. 154 00:07:30,182 --> 00:07:32,390 Dak kollu li jfisser huwa miġbud flimkien kollha tal-kodiċi, 155 00:07:32,390 --> 00:07:35,570 u issa huwa kien jitgħabbew fil GDB, u huwa lest li tmur. 156 00:07:35,570 --> 00:07:37,140 >> Issa, dak li nixtieq do? 157 00:07:37,140 --> 00:07:39,130 Tiftakar dak l- ewwel pass tipikament huwa 158 00:07:39,130 --> 00:07:42,540 wara Jien ġewwa ta 'dan l-ambjent? 159 00:07:42,540 --> 00:07:44,540 Nisperaw, inti qal sett punt break, minħabba 160 00:07:44,540 --> 00:07:46,240 fil-fatt dan huwa dak li nixtieq do. 161 00:07:46,240 --> 00:07:47,990 Issa, jien ma jkollhom l- kodiċi tas-sors għal dan 162 00:07:47,990 --> 00:07:50,948 quddiem lili, li hija probabbilment mhuwiex il-każ użu tipiku, bil-mod. 163 00:07:50,948 --> 00:07:52,055 You probabbilment se. 164 00:07:52,055 --> 00:07:52,680 Allura li tajjeb. 165 00:07:52,680 --> 00:07:55,790 Imma jekk wieħed jassumi inti ma, x'hemm il-funzjoni waħda li taf 166 00:07:55,790 --> 00:07:58,880 teżisti f'kull programm C wieħed? 167 00:07:58,880 --> 00:08:04,420 Ma jimpurtax kemm hu kbir jew kif kkumplikata huwa, din il-funzjoni definittivament jeżisti. 168 00:08:04,420 --> 00:08:05,440 Main, id-dritt? 169 00:08:05,440 --> 00:08:08,870 >> Allura nuqqas kollox, nistgħu tistabbilixxi punt tal-qasma fil prinċipali. 170 00:08:08,870 --> 00:08:12,200 U għal darb'oħra, I jistgħu biss tip break prinċipali, minflok b. 171 00:08:12,200 --> 00:08:14,650 U jekk int kurjuż, jekk inti qatt tip out kmand twil 172 00:08:14,650 --> 00:08:16,800 u mbagħad jirrealizzaw li inti ttajpjati il-ħaġa ħażina, 173 00:08:16,800 --> 00:08:18,770 u inti tixtieq li jeħles ta 'kulħadd kif I biss ma, 174 00:08:18,770 --> 00:08:22,029 inti tista 'tieħu Kontroll U, li se ħassar kollox u inti tressaq lura 175 00:08:22,029 --> 00:08:23,570 għall-bidu tal-linji cursor. 176 00:08:23,570 --> 00:08:26,569 A ħafna aktar malajr milli sempliċement żomm il- tħassar, jew jolqot il-darba mazz 177 00:08:26,569 --> 00:08:27,080 fuq. 178 00:08:27,080 --> 00:08:28,740 >> Allura aħna ser jistabbilixxu punt tal-qasma fil prinċipali. 179 00:08:28,740 --> 00:08:32,970 U kif tista 'tara, li jgħid konna tistabbilixxi punt tal-qasma fil-fajl buggy1.c, 180 00:08:32,970 --> 00:08:36,330 u apparentement l-ewwel linja tal-kodiċi ta 'prinċipali hija linja sebgħa. 181 00:08:36,330 --> 00:08:38,080 Għal darb'oħra, aħna ma jkollhomx il sors fajl hawn, 182 00:08:38,080 --> 00:08:40,429 imma jien ser jassumi li huwa javżak me-verità. 183 00:08:40,429 --> 00:08:44,510 U mbagħad, jien biss tipprova u tmexxi l-programm, r. 184 00:08:44,510 --> 00:08:45,360 Programm tal-bidu. 185 00:08:45,360 --> 00:08:48,160 Dritt kollox, hekk dan il-messaġġ huwa xi ftit cryptic. 186 00:08:48,160 --> 00:08:50,160 Imma bażikament x'hemm jiġri hawn huwa huwa biss 187 00:08:50,160 --> 00:08:53,350 javżak me I ve hit break tiegħi punt, break-punt numru 1. 188 00:08:53,350 --> 00:08:55,877 >> U mbagħad, dik il-linja tal-kodiċi, ebda tali file jew direttorju. 189 00:08:55,877 --> 00:08:57,710 L-unika raġuni li Jien jaraw dak il-messaġġ 190 00:08:57,710 --> 00:09:00,800 huwa għaliex I involontarjament imħassar fajl buggy.c tiegħi. 191 00:09:00,800 --> 00:09:04,050 Jekk il-fajl buggy1.c tiegħi kienet teżisti fid-direttorju kurrenti, 192 00:09:04,050 --> 00:09:06,920 dak id-dritt line kieku hemm fil-fatt tell me dak li l-linja tal-kodiċi 193 00:09:06,920 --> 00:09:08,214 litteralment jaqra. 194 00:09:08,214 --> 00:09:09,380 Sfortunatament, I hija mħassra. 195 00:09:09,380 --> 00:09:14,790 Aħna ser ikollhom biex tip ta 'jinnaviga permezz ta 'dan ftit aktar bl-addoċċ. 196 00:09:14,790 --> 00:09:17,330 >> OK, so ejja naraw, dak do I trid tagħmel hawn? 197 00:09:17,330 --> 00:09:21,770 Well, I jixtieq ikun jaf liema lokali varjabbli forsi huma disponibbli għalija. 198 00:09:21,770 --> 00:09:23,570 Stajt bdew programm tiegħi. 199 00:09:23,570 --> 00:09:28,515 Ejja naraw dak li jista 'jkun diġà initialized għalina. 200 00:09:28,515 --> 00:09:31,430 I tip lokal Info, l-ebda lokal. 201 00:09:31,430 --> 00:09:33,960 Dritt kollu, sabiex ma tagħti me ton ta 'informazzjoni. 202 00:09:33,960 --> 00:09:37,600 I tista 'tipprova u jistampa varjabbli, imma jien ma nafx xi ismijiet varjabbli. 203 00:09:37,600 --> 00:09:39,930 I tista 'tipprova traċċa lura, imma jien ġewwa tal ewlenija, 204 00:09:39,930 --> 00:09:43,710 so I know I ma jkunux għamlu sejħa oħra funzjoni dritt issa. 205 00:09:43,710 --> 00:09:47,710 >> Allura jidher qisu għażliet biss tiegħi huma li tuża n jew hekk u jibdew adsa. 206 00:09:47,710 --> 00:09:49,630 Jien ser tuża n. 207 00:09:49,630 --> 00:09:51,180 So I tip n. 208 00:09:51,180 --> 00:09:53,060 Oh gosh tiegħi, dak li qed jiġri hawn. 209 00:09:53,060 --> 00:09:56,260 Programm irċieva sinjali, SIGSEGV tort segmentazzjoni, 210 00:09:56,260 --> 00:09:57,880 u mbagħad mazz sħiħ ta 'għalf. 211 00:09:57,880 --> 00:09:58,880 Jien diġà megħlub. 212 00:09:58,880 --> 00:10:00,980 Ukoll, hemm attwalment lott li wieħed għandu jitgħallem hawn. 213 00:10:00,980 --> 00:10:02,520 Allura dak li jfisser dan tgħidilna? 214 00:10:02,520 --> 00:10:09,180 Dak li tgħidilna huwa, dan il-programm huwa waslet biex, iżda għadu ma, tort SEG. 215 00:10:09,180 --> 00:10:12,550 U b'mod partikolari, jien ser li zoom anke aktar hawn, 216 00:10:12,550 --> 00:10:18,980 huwa dwar li SEG tort dwar xi ħaġa imsejħa strcmp. 217 00:10:18,980 --> 00:10:22,705 >> Issa, aħna ma jista diskussi din il-funzjoni b'mod estensiv. 218 00:10:22,705 --> 00:10:25,580 Iżda huwa is-- għaliex aħna ma tkunx qed tmur biex jitkellmu dwar kull funzjoni li 219 00:10:25,580 --> 00:10:28,610 teżisti fl-istandard C library-- iżda dawn qed kollha disponibbli lilek, 220 00:10:28,610 --> 00:10:32,110 partikolarment jekk inti tieħu tħares lejn reference.cs50.net. 221 00:10:32,110 --> 00:10:35,000 U strcmp huwa verament b'saħħtu funzjoni li teżisti ġewwa 222 00:10:35,000 --> 00:10:38,070 tal-header string.h fajl, li huwa header 223 00:10:38,070 --> 00:10:41,970 fajl li hija ddedikata għall-funzjonijiet li x-xogħol ma 'u timmanipula kordi. 224 00:10:41,970 --> 00:10:49,830 >> U b'mod partikolari, dak strcmp ma huwa jikkompara l-valuri ta 'żewġ kordi. 225 00:10:49,830 --> 00:10:54,160 Hekk jien wasalt biex Segmentazzjoni tort fuq sejħa għall strcmp jidher. 226 00:10:54,160 --> 00:10:58,530 I hit n, u fil-fatt I nikseb il-messaġġ, programm ttemm fil SIGSEGV sinjal 227 00:10:58,530 --> 00:11:01,370 tort segmentazzjoni. Allura issa I attwalment jkollhom seg akkużati, 228 00:11:01,370 --> 00:11:06,479 u l-programm tiegħi pretty ħafna effettiv mogħti. 229 00:11:06,479 --> 00:11:07,770 Dan huwa l-aħħar tal-programm. 230 00:11:07,770 --> 00:11:10,370 Hija fallew, ġġarraf. 231 00:11:10,370 --> 00:11:14,740 Allura ma kien ħafna, imma jien fil-fatt ma jitgħallmu pjuttost ftit 232 00:11:14,740 --> 00:11:16,747 minn din l-esperjenza ftit. 233 00:11:16,747 --> 00:11:17,580 Liema kienu I tgħallmu? 234 00:11:17,580 --> 00:11:22,020 Ukoll, il-programm tiegħi ħabtiet pretty ħafna immedjatament. 235 00:11:22,020 --> 00:11:26,300 Programm tiegħi crashes fuq Sejħa għall strcmp, imma I 236 00:11:26,300 --> 00:11:30,560 m'għandhom l-ebda varjabbli lokali tiegħi programm fiż-żmien li ġġarrfu. 237 00:11:30,560 --> 00:11:37,320 Allura dak string, jew kordi, jista I tkun possibbilment jitqabblu. 238 00:11:37,320 --> 00:11:42,140 Jekk jien ma jkollhom ebda lokali varjabbli, inti tista 239 00:11:42,140 --> 00:11:45,520 surmise li I have-- hemm forsi huwa varjabbli globali, li jista 'jkun minnu. 240 00:11:45,520 --> 00:11:47,670 >> Iżda ġeneralment, jidher bħal jien tqabbil 241 00:11:47,670 --> 00:11:52,070 għal xi ħaġa li ma teżistix. 242 00:11:52,070 --> 00:11:54,130 Mela ejja tinvestiga li ftit aktar. 243 00:11:54,130 --> 00:11:55,120 Hekk jien ser ċara iskrin tiegħi. 244 00:11:55,120 --> 00:11:57,536 Jien ser nieqaf mill- Ambjent GDB għat-tieni. 245 00:11:57,536 --> 00:12:01,300 U jien ħsieb, OK, hekk hemm ebda varjabbli lokali fl-programm tiegħi. 246 00:12:01,300 --> 00:12:06,444 I wonder jekk forsi jien suppost li jgħaddu fi string bħala argument kmand tal-linja. 247 00:12:06,444 --> 00:12:07,610 Mela ejja biss dan it-test. 248 00:12:07,610 --> 00:12:09,020 I għadhom ma għamlux dan qabel. 249 00:12:09,020 --> 00:12:14,244 >> Ejja naraw jekk forsi jekk I run dan il-programm bi argument kmand tal-linja taħdem. 250 00:12:14,244 --> 00:12:16,140 Huh, l-ebda tort segmentazzjoni hemmhekk. 251 00:12:16,140 --> 00:12:17,870 Hija biss told me I dehret out. 252 00:12:17,870 --> 00:12:19,170 Allura forsi li l-jiffissaw hawn. 253 00:12:19,170 --> 00:12:27,560 U fil-fatt, jekk immur lura u nħarsu lejn il-kodiċi tas-sors attwali għall buggy1.c, 254 00:12:27,560 --> 00:12:31,180 jidher bħallikieku dak li qed nagħmel huwa Jien jagħmlu sejħa għal strcmp mingħajr 255 00:12:31,180 --> 00:12:34,010 verifika jekk fil-fatt ARGV [1] jeżisti. 256 00:12:34,010 --> 00:12:36,730 Dan huwa effettivament il- kodiċi tas-sors għall buggy1.c. 257 00:12:36,730 --> 00:12:38,855 Allura dak I really bżonn biex tagħmel hawn biex jiffissaw programm tiegħi, 258 00:12:38,855 --> 00:12:40,835 jekk wieħed jassumi Għandi l- fajl quddiem lili, huwa 259 00:12:40,835 --> 00:12:44,740 li żżid ftit kontroll li jagħmlu żgur li argc huwa ugwali għal 2. 260 00:12:44,740 --> 00:12:47,780 Allura dan l-eżempju, għal darb'oħra, bħal I said, huwa ftit artifiċjali, right? 261 00:12:47,780 --> 00:12:49,840 Int ġeneralment mhux ser aċċidentalment tħassar kodiċi sors tiegħek 262 00:12:49,840 --> 00:12:51,820 u mbagħad għandhom jippruvaw u debug-programm. 263 00:12:51,820 --> 00:12:53,120 Iżda wieħed jittama, hija tat inti illustrazzjoni 264 00:12:53,120 --> 00:12:55,120 tat-tipi ta 'affarijiet li inti tista 'taħseb dwar 265 00:12:55,120 --> 00:12:56,610 kif int debugging program tiegħek. 266 00:12:56,610 --> 00:12:58,760 >> X'inhu l-istat ta 'affarijiet hawn? 267 00:12:58,760 --> 00:13:00,510 What do I varjabbli għandhom aċċessibbli lili? 268 00:13:00,510 --> 00:13:03,600 Fejn eżattament programm tiegħi jiġġarrfu, fuq liema linja, 269 00:13:03,600 --> 00:13:05,240 fuq dak sejħa għal liema funzjoni? 270 00:13:05,240 --> 00:13:06,952 X'tip ta 'ħjiel ma li jagħtu me? 271 00:13:06,952 --> 00:13:08,910 U dan huwa eżattament l- tip ta 'mentalità li inti 272 00:13:08,910 --> 00:13:12,820 għandek tkun jkollna fis meta int jaħsbu dwar debugging programmi tiegħek. 273 00:13:12,820 --> 00:13:13,820 >> Jien Doug Lloyd. 274 00:13:13,820 --> 00:13:16,140 Dan huwa CS50. 275 00:13:16,140 --> 00:15:08,642