1 00:00:00,000 --> 00:00:05,640 2 00:00:05,640 --> 00:00:06,830 >> DOUG LLOYD: zote haki GDB. 3 00:00:06,830 --> 00:00:08,480 Ni kitu gani hasa? 4 00:00:08,480 --> 00:00:11,310 Hivyo GDB, ambayo inasimamia kwa GNU Debugger, 5 00:00:11,310 --> 00:00:15,040 ni kweli kutisha chombo kwamba tunaweza kutumia kutusaidia Debug mipango yetu, 6 00:00:15,040 --> 00:00:18,210 au kujua ni wapi mambo ni kwenda vibaya katika mipango yetu. 7 00:00:18,210 --> 00:00:22,590 GDB ni kushangaza nguvu, lakini pato na mwingiliano na hayo 8 00:00:22,590 --> 00:00:23,830 inaweza kuwa ni kidogo kidogo cryptic. 9 00:00:23,830 --> 00:00:28,210 Ni kawaida mstari amri chombo, na inaweza kutupa mengi ya ujumbe saa wewe. 10 00:00:28,210 --> 00:00:31,144 Na inaweza aina ya vigumu Hazrat nini hasa kinaendelea. 11 00:00:31,144 --> 00:00:33,560 Kwa bahati nzuri, tumekuwa kuchukuliwa hatua kurekebisha tatizo hili kwa ajili yenu 12 00:00:33,560 --> 00:00:36,281 kama wewe kazi kwa njia CS50. 13 00:00:36,281 --> 00:00:39,030 Kama wewe si kutumia graphical HatiJava, ambayo mwenzangu Dan 14 00:00:39,030 --> 00:00:41,570 Armandarse amesema kabisa kidogo kuhusu katika video ambayo 15 00:00:41,570 --> 00:00:44,740 lazima juu hapa sasa hivi, unaweza haja 16 00:00:44,740 --> 00:00:48,270 kutumia mstari amri hizi zana kufanya kazi na GDB. 17 00:00:48,270 --> 00:00:51,250 Kama wewe ni kufanya kazi katika CS50 IDE, huna haja ya kufanya hivyo. 18 00:00:51,250 --> 00:00:53,550 Lakini kama wewe si kufanya kazi katika CS50 IDE, 19 00:00:53,550 --> 00:00:55,750 labda kwa kutumia toleo la ya Appliance CS50, 20 00:00:55,750 --> 00:00:58,860 au nyingine Linux uendeshaji mfumo na GDB imewekwa juu yake, 21 00:00:58,860 --> 00:01:00,980 unaweza haja ya kutumia hizi amri line zana. 22 00:01:00,980 --> 00:01:02,860 >> Na kwa kuwa waweza kuwa kufanya hivyo, ni 23 00:01:02,860 --> 00:01:06,280 muhimu tu kuelewa jinsi GDB kazi kutoka mstari amri. 24 00:01:06,280 --> 00:01:09,650 Lakini tena, kama wewe ni kutumia CS50 IDE, wewe 25 00:01:09,650 --> 00:01:15,400 Unaweza kutumia HatiJava graphical ambayo imejengwa katika IDE. 26 00:01:15,400 --> 00:01:18,750 Hivyo kufanya mambo kusonga kwa GDB, kuanza debugging 27 00:01:18,750 --> 00:01:21,220 mchakato wa fulani mpango, wote unahitaji kufanya 28 00:01:21,220 --> 00:01:23,810 ni aina GDB ikifuatiwa kwa jina mpango. 29 00:01:23,810 --> 00:01:28,620 Hivyo kwa mfano, kama mpango wako ni hodi, ungekuwa aina GDB hodi. 30 00:01:28,620 --> 00:01:31,210 >> Wakati wewe kufanya hivyo, wewe ni kwenda kuvuta up mazingira GDB. 31 00:01:31,210 --> 00:01:33,800 Haraka yako itabadilika, na badala ya kuwa kile kawaida 32 00:01:33,800 --> 00:01:35,841 ni pale unapoandika mambo kwa amri line-- ls, 33 00:01:35,841 --> 00:01:38,115 cd-- wote wa kawaida yako Linux amri, haraka yako 34 00:01:38,115 --> 00:01:42,200 kubadilika na, pengine, kitu kama mabano GDB mabano. 35 00:01:42,200 --> 00:01:46,630 Hiyo ni GDB yako mpya haraka, kwa sababu uko ndani ya mazingira GDB. 36 00:01:46,630 --> 00:01:49,830 Mara baada ya ndani ya mazingira ambayo, kuna amri mbili kuu 37 00:01:49,830 --> 00:01:52,290 kwamba pengine utasikia kutumia ili zifuatazo. 38 00:01:52,290 --> 00:01:55,200 >> Kwanza ni b, ambayo ni mfupi kwa ajili ya mapumziko. 39 00:01:55,200 --> 00:01:58,690 Na baada ya wewe aina b, kwa kawaida wewe aina jina la kazi, 40 00:01:58,690 --> 00:02:01,040 au kama kutokea kwa kujua kuzunguka kile mstari idadi 41 00:02:01,040 --> 00:02:04,100 mpango wako ni mapya kuwa na tabia weird kidogo, 42 00:02:04,100 --> 00:02:06,370 unaweza aina line idadi huko pia. 43 00:02:06,370 --> 00:02:09,660 Nini b, au mapumziko, anafanya ni inaruhusu programu yako 44 00:02:09,660 --> 00:02:13,270 kuendesha hadi hatua fulani, yaani, jina la kazi 45 00:02:13,270 --> 00:02:15,880 kwamba bayana au mstari idadi hiyo bayana. 46 00:02:15,880 --> 00:02:18,590 >> Na katika hatua hiyo, ni kufungia utekelezaji. 47 00:02:18,590 --> 00:02:21,670 Hili ni jambo zuri, kwa sababu mara moja utekelezaji imekuwa waliohifadhiwa, 48 00:02:21,670 --> 00:02:25,214 unaweza kuanza polepole sana hatua kupitia mpango wako. 49 00:02:25,214 --> 00:02:28,130 Kwa kawaida, kama tumekuwa kukimbia mipango yako, wao ni pretty mfupi. 50 00:02:28,130 --> 00:02:31,250 Kwa kawaida, aina dot slash chochote jina la mpango wako ni, hit Enter, 51 00:02:31,250 --> 00:02:33,470 na kabla unaweza blink, yako Mpango tayari kumaliza. 52 00:02:33,470 --> 00:02:36,620 Ni kweli muda mwingi kujaribu na kufikiri nini kinaendelea vibaya. 53 00:02:36,620 --> 00:02:40,920 Hivyo ni kweli kuwa na uwezo wa kupunguza kasi ya mambo chini kwa kuweka hatua ya mapumziko na b, 54 00:02:40,920 --> 00:02:43,040 na kisha wanazidi katika. 55 00:02:43,040 --> 00:02:46,169 >> Kisha mara moja umefanya kuweka mapumziko yako hatua, unaweza kuendesha programu. 56 00:02:46,169 --> 00:02:47,960 Na kama una hoja mstari amri, 57 00:02:47,960 --> 00:02:51,610 bayana yao hapa, si wakati aina GDB mpango jina lako. 58 00:02:51,610 --> 00:02:55,980 Wewe taja zote mstari amri hoja kwa kuchukua r, au kukimbia, 59 00:02:55,980 --> 00:03:00,270 na kisha amri yo hoja mstari unahitaji ndani ya mpango wako. 60 00:03:00,270 --> 00:03:03,510 Kuna idadi ya mwingine kweli amri muhimu na manufaa 61 00:03:03,510 --> 00:03:04,970 ndani ya mazingira Pato la Taifa. 62 00:03:04,970 --> 00:03:07,540 Hivyo basi mimi tu haraka kwenda juu baadhi yao. 63 00:03:07,540 --> 00:03:11,320 >> Kwanza ni n, ambayo ni fupi kwa ajili ya pili, na unaweza aina ijayo badala ya n, 64 00:03:11,320 --> 00:03:12,304 wote ingekuwa kazi. 65 00:03:12,304 --> 00:03:13,470 Na ni tu shorthand. 66 00:03:13,470 --> 00:03:17,540 Na kama umefanya pengine tayari wamezipata kutumika, kuwa na uwezo wa aina ya mambo 67 00:03:17,540 --> 00:03:20,520 mfupi kwa ujumla ni bora zaidi. 68 00:03:20,520 --> 00:03:24,100 Na nini itakuwa kufanya ni kutakuwa na hatua mbele moja kuzuia wa kanuni. 69 00:03:24,100 --> 00:03:26,170 Hivyo itabidi kusonga mbele mpaka kazi ya wito. 70 00:03:26,170 --> 00:03:28,350 Na kisha badala ya mbizi katika kazi hiyo 71 00:03:28,350 --> 00:03:33,130 na kwenda njia zote za kazi ambayo kanuni, itakuwa tu kuwa na kazi. 72 00:03:33,130 --> 00:03:34,400 >> Kazi wataitwa. 73 00:03:34,400 --> 00:03:35,733 Itakuwa kufanya lolote kazi yake ni. 74 00:03:35,733 --> 00:03:38,870 Itakuwa kurudi thamani ya kazi ambayo kuitwa hivyo. 75 00:03:38,870 --> 00:03:42,490 Na kisha utasikia hoja juu ya mstari wa pili wa kwamba wito kazi. 76 00:03:42,490 --> 00:03:44,555 Kama unataka hatua ndani ya kazi, 77 00:03:44,555 --> 00:03:46,430 badala ya kuwa tu ni kutekeleza, hasa 78 00:03:46,430 --> 00:03:50,004 kama unadhani kwamba tatizo ili uongo ndani ya kazi kwamba, 79 00:03:50,004 --> 00:03:52,670 unaweza, bila shaka, kuweka mapumziko uhakika ndani ya kazi hiyo. 80 00:03:52,670 --> 00:03:57,820 Au kama wewe ni tayari mbio, unaweza kutumia s hatua mbele moja mstari wa kanuni. 81 00:03:57,820 --> 00:04:01,170 >> Hivyo hii itakuwa hatua katika na kupiga mbizi katika kazi, 82 00:04:01,170 --> 00:04:04,750 badala ya tu na kutekeleza na kuendelea juu ya kazi katika 83 00:04:04,750 --> 00:04:07,380 kwamba uko kwa debugging. 84 00:04:07,380 --> 00:04:09,870 Kama wewe milele unataka kujua thamani ya kutofautiana, 85 00:04:09,870 --> 00:04:12,507 unaweza aina p, au Magazeti, na kisha jina kutofautiana. 86 00:04:12,507 --> 00:04:15,090 Na kwamba itakuwa magazeti nje kwenu, ndani ya mazingira GDB, 87 00:04:15,090 --> 00:04:19,110 jina la kutofautiana, kwamba you-- udhuru ME thamani ya kutofautiana 88 00:04:19,110 --> 00:04:20,064 kwamba umefanya jina. 89 00:04:20,064 --> 00:04:23,230 Kama unataka kujua maadili ya kila ndani kutofautiana kupatikana kutoka ambapo 90 00:04:23,230 --> 00:04:25,970 wewe sasa ni katika yako mpango, unaweza aina ya maelezo wazawa. 91 00:04:25,970 --> 00:04:28,332 Ni mengi kwa kasi zaidi kuliko kuandika p na kisha chochote, 92 00:04:28,332 --> 00:04:30,540 orodha nje wote wa vigezo kwamba unajua kuwepo. 93 00:04:30,540 --> 00:04:34,370 Unaweza aina ya maelezo wenyeji, na magazeti nje kila kitu kwa ajili yenu. 94 00:04:34,370 --> 00:04:37,770 Next up ni bt, ambayo ni mfupi kwa nyuma kuwaeleza. 95 00:04:37,770 --> 00:04:41,680 Sasa, kwa ujumla, mapema hasa katika CS50, 96 00:04:41,680 --> 00:04:44,450 utakuwa si kweli kuwa tukio kutumia bt, au Nyuma kuwaeleza, 97 00:04:44,450 --> 00:04:47,860 kwa sababu wewe ni kutokuwa na kazi kwamba wito kazi nyingine. 98 00:04:47,860 --> 00:04:50,450 >> Unaweza kuwa na kuu wito a kazi, lakini hiyo ni pengine hilo. 99 00:04:50,450 --> 00:04:53,199 Huna kazi ambayo wengine wito kazi nyingine, ambayo 100 00:04:53,199 --> 00:04:54,880 wito kazi nyingine, na kadhalika. 101 00:04:54,880 --> 00:04:57,550 Lakini kama mipango yako kupata zaidi tata, na hasa 102 00:04:57,550 --> 00:05:00,290 unapoanza kufanya kazi na kujirudia, nyuma kuwaeleza 103 00:05:00,290 --> 00:05:05,150 inaweza kuwa njia muhimu kweli kweli basi wewe aina ya kupata baadhi ya mazingira kwa ambapo 104 00:05:05,150 --> 00:05:06,460 Mimi ni katika mpango wangu. 105 00:05:06,460 --> 00:05:10,590 Hivyo kusema umefanya imeandikwa kanuni yako, na unajua kwamba kuu wito kazi 106 00:05:10,590 --> 00:05:14,720 f, ambayo inatoa wito kazi g, ambayo inatoa wito kazi h. 107 00:05:14,720 --> 00:05:17,650 Hivyo tuna tabaka kadhaa ya nesting kinachoendelea hapa. 108 00:05:17,650 --> 00:05:19,440 >> Kama uko ndani ya GDB mazingira yako, 109 00:05:19,440 --> 00:05:21,640 na unajua ndani ya yako ya h, lakini kusahau 110 00:05:21,640 --> 00:05:27,210 kuhusu nini got wewe ambapo are-- unaweza aina bt, au nyuma kuwaeleza, 111 00:05:27,210 --> 00:05:32,370 na itakuwa magazeti nje h, g, f kuu, pamoja na baadhi ya taarifa nyingine, ambayo 112 00:05:32,370 --> 00:05:35,984 anatoa kidokezo kwamba, OK kuu kuitwa f, f aitwaye g, g aitwaye h, 113 00:05:35,984 --> 00:05:37,900 na hapo ndipo mimi sasa niko katika mpango wangu. 114 00:05:37,900 --> 00:05:41,380 Hivyo inaweza kuwa muhimu kweli kweli, hasa kama cryptic-ness ya GDB 115 00:05:41,380 --> 00:05:45,667 inakuwa kidogo mno, kwa kujua hasa ambapo mambo yalivyo. 116 00:05:45,667 --> 00:05:48,500 Hatimaye, wakati mpango wako ni kosa, au wakati wewe ni kosa debugging ni 117 00:05:48,500 --> 00:05:50,125 na unataka hatua mbali kutokana na mazingira GDB, 118 00:05:50,125 --> 00:05:51,940 inasaidia kujua jinsi ya kupata nje yake. 119 00:05:51,940 --> 00:05:55,500 Unaweza aina q, au kuacha, kupata nje. 120 00:05:55,500 --> 00:05:59,220 Sasa, kabla ya video ya leo Mimi tayari mpango buggy 121 00:05:59,220 --> 00:06:03,900 aitwaye buggy1, ambayo mimi ulioandaliwa kutoka faili inayojulikana kama buggy1.c. 122 00:06:03,900 --> 00:06:06,500 Kama unaweza kutarajia, hii mpango huo ni katika buggy ukweli. 123 00:06:06,500 --> 00:06:08,990 Kitu fulani kitaenda vibaya wakati mimi kujaribu na kukimbia nayo. 124 00:06:08,990 --> 00:06:13,014 Sasa, kwa bahati mbaya, mimi inadvertently kufutwa buggy1.c faili yangu, 125 00:06:13,014 --> 00:06:15,930 hivyo ili kwa mimi kufikiri nini kinaendelea vibaya na mpango huu, 126 00:06:15,930 --> 00:06:18,770 Mimi nina kwenda kuwa na matumizi ya GDB aina ya upofu, kujaribu 127 00:06:18,770 --> 00:06:22,372 navigate kupitia mpango huu kwa kufikiri hasa nini kinaendelea vibaya. 128 00:06:22,372 --> 00:06:24,580 Lakini kwa kutumia zana tu tumekuwa tayari kujifunza kuhusu, 129 00:06:24,580 --> 00:06:27,700 tunaweza takwimu pretty much nje ni nini hasa. 130 00:06:27,700 --> 00:06:30,740 Basi hebu kichwa juu ya CS50 IDE na kuwa na kuangalia. 131 00:06:30,740 --> 00:06:33,155 OK, hivyo tuko hapa katika wangu CS50 IDE mazingira, 132 00:06:33,155 --> 00:06:35,697 na mimi itabidi kuvuta kidogo hivyo unaweza kuona kidogo zaidi. 133 00:06:35,697 --> 00:06:38,530 Katika terminal dirisha yangu, kama mimi orodha yaliyomo ya mkurugenzi wangu wa sasa 134 00:06:38,530 --> 00:06:41,250 na ls, tutaweza kuona kwamba mimi kuwa wanandoa wa files chanzo 135 00:06:41,250 --> 00:06:44,982 hapa, ikiwa ni pamoja na awali kujadiliwa buggy1. 136 00:06:44,982 --> 00:06:46,940 Ni nini kinachoendelea wakati Mimi kujaribu na kukimbia buggy1. 137 00:06:46,940 --> 00:06:47,773 Naam hebu kujua. 138 00:06:47,773 --> 00:06:52,510 Mimi aina dot slash, Buggy, na mimi hit Enter. 139 00:06:52,510 --> 00:06:53,670 >> Mkato makosa. 140 00:06:53,670 --> 00:06:55,000 Hiyo si nzuri. 141 00:06:55,000 --> 00:06:57,180 Kama unakumbuka, segmentation kosa kawaida 142 00:06:57,180 --> 00:07:01,540 hutokea wakati sisi kupata kumbukumbu kwamba sisi ni haruhusiwi kugusa. 143 00:07:01,540 --> 00:07:03,820 Tumekuwa namna fulani kufikiwa nje ya mipaka 144 00:07:03,820 --> 00:07:05,995 ya nini mpango, compiler, ametupa. 145 00:07:05,995 --> 00:07:08,310 Na hivyo tayari hiyo ni fununu kuweka katika sanduku la vifaa 146 00:07:08,310 --> 00:07:10,660 kama sisi kuanza mchakato debugging. 147 00:07:10,660 --> 00:07:13,620 Kitu amekwenda vibaya kidogo hapa. 148 00:07:13,620 --> 00:07:15,935 >> Haki wote, hivyo hebu kuanza up mazingira GDB 149 00:07:15,935 --> 00:07:19,030 na kuona kama tunaweza kufikiri nini hasa tatizo ni. 150 00:07:19,030 --> 00:07:21,674 Mimi nina kwenda kwa wazi screen yangu, na mimi nina kwenda aina GDB 151 00:07:21,674 --> 00:07:24,340 tena, kwa iingie katika mazingira GDB, na jina la mpango 152 00:07:24,340 --> 00:07:27,450 kuwa nataka Debug, buggy1. 153 00:07:27,450 --> 00:07:30,182 Sisi kupata ujumbe kidogo, kusoma alama kutoka buggy1, kosa. 154 00:07:30,182 --> 00:07:32,390 Wote kwamba maana ni vunjwa pamoja wote wa kanuni, 155 00:07:32,390 --> 00:07:35,570 na sasa imekuwa ni kubeba katika GDB, na ni tayari kwenda. 156 00:07:35,570 --> 00:07:37,140 >> Sasa, je, nataka kufanya? 157 00:07:37,140 --> 00:07:39,130 Je, unakumbuka kile Hatua ya kwanza ni kawaida 158 00:07:39,130 --> 00:07:42,540 baada ya mimi nina ndani ya mazingira haya? 159 00:07:42,540 --> 00:07:44,540 Hopefully, wewe alisema kuweka hatua ya mapumziko, kwa sababu 160 00:07:44,540 --> 00:07:46,240 kutokana na ukweli kuwa ni nini nataka kufanya. 161 00:07:46,240 --> 00:07:47,990 Sasa, sina chanzo kanuni kwa hii 162 00:07:47,990 --> 00:07:50,948 mbele yangu, ambayo pengine ni si kawaida na matumizi ya kesi, kwa njia. 163 00:07:50,948 --> 00:07:52,055 Pengine mapenzi. 164 00:07:52,055 --> 00:07:52,680 Hivyo hiyo ni nzuri. 165 00:07:52,680 --> 00:07:55,790 Lakini kuchukua huna, nini kazi moja kwamba unajua 166 00:07:55,790 --> 00:07:58,880 ipo katika kila moja C mpango? 167 00:07:58,880 --> 00:08:04,420 Bila kujali jinsi kubwa au jinsi ngumu ni, kazi hii dhahiri lipo. 168 00:08:04,420 --> 00:08:05,440 Kuu, sawa? 169 00:08:05,440 --> 00:08:08,870 >> Hivyo kushindwa yote, tunaweza kuweka hatua ya mapumziko katika kuu. 170 00:08:08,870 --> 00:08:12,200 Na tena, mimi naweza aina tu kuvunja kuu, badala ya b. 171 00:08:12,200 --> 00:08:14,650 Na kama wewe ni curious, kama wewe milele aina nje amri kwa muda mrefu 172 00:08:14,650 --> 00:08:16,800 na kisha kutambua kwamba kitu kibaya typed, 173 00:08:16,800 --> 00:08:18,770 na unataka kujikwamua ya yote kama mimi tu alifanya, 174 00:08:18,770 --> 00:08:22,029 unaweza kuchukua Kudhibiti U, ambayo itakuwa kufuta kila kitu na kuleta nyuma 175 00:08:22,029 --> 00:08:23,570 mwanzo wa mistari mshale. 176 00:08:23,570 --> 00:08:26,569 Mengi zaidi kuliko tu kushikilia chini kufuta, au kupiga yake mara rundo 177 00:08:26,569 --> 00:08:27,080 zaidi. 178 00:08:27,080 --> 00:08:28,740 >> Hivyo tutaweza kuweka hatua ya mapumziko katika kuu. 179 00:08:28,740 --> 00:08:32,970 Na kama unaweza kuona, inasema tumekuwa kuweka hatua ya mapumziko katika faili buggy1.c, 180 00:08:32,970 --> 00:08:36,330 na inaonekana mstari wa kwanza ya kanuni za kuu ni mstari saba. 181 00:08:36,330 --> 00:08:38,080 Tena, hatuna chanzo faili hapa, 182 00:08:38,080 --> 00:08:40,429 lakini mimi itabidi kudhani kuwa ni kuniambia ukweli. 183 00:08:40,429 --> 00:08:44,510 Na kisha, mimi tu kujaribu na kuendesha programu, r. 184 00:08:44,510 --> 00:08:45,360 Kuanzia mpango. 185 00:08:45,360 --> 00:08:48,160 Haki wote, hivyo ujumbe huu ni kidogo cryptic. 186 00:08:48,160 --> 00:08:50,160 Lakini kimsingi nini kinachotokea hapa ni ni tu 187 00:08:50,160 --> 00:08:53,350 kuniambia nimekuwa kugonga mapumziko yangu uhakika, hatua ya mapumziko namba 1. 188 00:08:53,350 --> 00:08:55,877 >> Na kisha, kuwa mstari wa kanuni, hakuna vile faili au directory. 189 00:08:55,877 --> 00:08:57,710 Sababu tu kwamba Mimi nina kuona ujumbe kwamba 190 00:08:57,710 --> 00:09:00,800 ni kwa sababu mimi inadvertently kufutwa faili yangu buggy.c. 191 00:09:00,800 --> 00:09:04,050 Kama faili yangu buggy1.c kuwepo katika saraka ya sasa, 192 00:09:04,050 --> 00:09:06,920 kuwa mstari wa kulia ingekuwa kuna kweli kuniambia nini mstari wa kanuni 193 00:09:06,920 --> 00:09:08,214 halisi anasoma. 194 00:09:08,214 --> 00:09:09,380 Kwa bahati mbaya, mimi ilifutwa yake. 195 00:09:09,380 --> 00:09:14,790 Tunakwenda kuwa na aina ya navigate kwa njia hii kidogo zaidi upofu. 196 00:09:14,790 --> 00:09:17,330 >> Sawa, hivyo hebu angalia, nini Je, mimi wanataka kufanya hapa? 197 00:09:17,330 --> 00:09:21,770 Naam, napenda kujua nini ndani vigezo labda zinapatikana kwangu. 198 00:09:21,770 --> 00:09:23,570 Nimeanza mpango wangu. 199 00:09:23,570 --> 00:09:28,515 Hebu kuona nini inaweza kuwa Tayari initialized kwa ajili yetu. 200 00:09:28,515 --> 00:09:31,430 Mimi aina Info wenyeji, hakuna wazawa. 201 00:09:31,430 --> 00:09:33,960 Haki wote, hivyo kwamba hana nipe tani ya habari. 202 00:09:33,960 --> 00:09:37,600 Mimi naweza kujaribu na magazeti nje kutofautiana, lakini sijui majina yoyote kutofautiana. 203 00:09:37,600 --> 00:09:39,930 Mimi naweza kujaribu nyuma kuwaeleza, lakini nina ndani ya kuu, 204 00:09:39,930 --> 00:09:43,710 hivyo najua mimi si alifanya mwingine wito kazi hivi sasa. 205 00:09:43,710 --> 00:09:47,710 >> Hivyo inaonekana kama chaguzi yangu tu ni kutumia n au hivyo na kuanza kupiga mbizi katika. 206 00:09:47,710 --> 00:09:49,630 Mimi nina kwenda kutumia n. 207 00:09:49,630 --> 00:09:51,180 Hivyo mimi aina n. 208 00:09:51,180 --> 00:09:53,060 Oh gosh wangu, ni nini kinaendelea hapa. 209 00:09:53,060 --> 00:09:56,260 Programu ya kupokea ishara, SIGSEGV segmentation kosa, 210 00:09:56,260 --> 00:09:57,880 na kisha rundo zima ya mambo. 211 00:09:57,880 --> 00:09:58,880 Tayari nina kuzidiwa. 212 00:09:58,880 --> 00:10:00,980 Naam, kuna kweli mengi ya kujifunza hapa. 213 00:10:00,980 --> 00:10:02,520 Basi nini hii kutuambia? 214 00:10:02,520 --> 00:10:09,180 Nini inatuambia ni, mpango huu ni karibu, lakini ina bado, seg kosa. 215 00:10:09,180 --> 00:10:12,550 Na hasa, mimi nina kwenda kwa kuvuta hata zaidi hapa, 216 00:10:12,550 --> 00:10:18,980 ni kuhusu kosa seg kuhusu kitu kinachoitwa strcmp. 217 00:10:18,980 --> 00:10:22,705 >> Sasa, hatuwezi kujadili kazi hii kwa kina. 218 00:10:22,705 --> 00:10:25,580 Lakini is-- kwa sababu sisi siyo kwenda kuzungumzia kila kazi ambayo 219 00:10:25,580 --> 00:10:28,610 ipo katika kiwango cha maktaba C lakini wao ni wote inapatikana na wewe, 220 00:10:28,610 --> 00:10:32,110 hasa kama wewe kuchukua kuangalia reference.cs50.net. 221 00:10:32,110 --> 00:10:35,000 Na strcmp ni kweli nguvu kazi ambayo ipo ndani ya 222 00:10:35,000 --> 00:10:38,070 ya kichwa string.h file, ambayo ni header 223 00:10:38,070 --> 00:10:41,970 faili kwamba ni kujitolea na kazi kwamba kazi kwa na kuendesha masharti. 224 00:10:41,970 --> 00:10:49,830 >> Na hasa, nini strcmp gani ni inalinganishwa maadili ya masharti mawili. 225 00:10:49,830 --> 00:10:54,160 Hivyo mimi nina kuhusu segmentation kosa juu ya wito kwa strcmp inaonekana. 226 00:10:54,160 --> 00:10:58,530 Mimi kugonga n, na kwa kweli mimi kupata ujumbe, Mpango kuachishwa kwa ishara SIGSEGV 227 00:10:58,530 --> 00:11:01,370 segmentation kosa. Hivyo sasa Mimi kwa kweli kuwa seg alipinga, 228 00:11:01,370 --> 00:11:06,479 na mpango wangu ana pretty mengi kwa ufanisi wamekata. 229 00:11:06,479 --> 00:11:07,770 Hii ni mwisho wa mpango. 230 00:11:07,770 --> 00:11:10,370 Ni kuvunja chini, ni kugonga. 231 00:11:10,370 --> 00:11:14,740 Hivyo haikuwa mengi, lakini mimi kwa kweli kujifunza kidogo kabisa 232 00:11:14,740 --> 00:11:16,747 kutokana na uzoefu huu kidogo. 233 00:11:16,747 --> 00:11:17,580 Nini mimi kujifunza? 234 00:11:17,580 --> 00:11:22,020 Naam, mpango wangu shambulio pretty much mara moja. 235 00:11:22,020 --> 00:11:26,300 Mpango wangu shambulio juu ya a kuwaita kwa strcmp, lakini mimi 236 00:11:26,300 --> 00:11:30,560 hawana vigezo mitaa yoyote katika yangu Mpango wakati huo ni shambulio. 237 00:11:30,560 --> 00:11:37,320 Kwa hiyo kile kamba, au masharti, nitaweza uwezekano kuwa kulinganisha. 238 00:11:37,320 --> 00:11:42,140 Kama sina lolote ndani vigezo, waweza 239 00:11:42,140 --> 00:11:45,520 kusema kuwa mimi have-- huko labda ni variable kimataifa, ambayo inaweza kuwa kweli. 240 00:11:45,520 --> 00:11:47,670 >> Lakini kwa ujumla, inaonekana kama mimi nina kulinganisha 241 00:11:47,670 --> 00:11:52,070 kitu ambacho haipo. 242 00:11:52,070 --> 00:11:54,130 Basi hebu kuchunguza kuwa kidogo zaidi. 243 00:11:54,130 --> 00:11:55,120 Hivyo nina kwenda kwa wazi screen yangu. 244 00:11:55,120 --> 00:11:57,536 Mimi nina kwenda kuacha nje ya GDB mazingira kwa ajili ya pili. 245 00:11:57,536 --> 00:12:01,300 Na mimi nina kufikiri, OK, hivyo kuna hakuna vigezo mitaa katika mpango wangu. 246 00:12:01,300 --> 00:12:06,444 Nashangaa kama labda natakiwa kupita katika kamba kama hoja mstari amri. 247 00:12:06,444 --> 00:12:07,610 Basi hebu tu mtihani huu nje. 248 00:12:07,610 --> 00:12:09,020 Mimi sina kosa hili kabla. 249 00:12:09,020 --> 00:12:14,244 >> Hebu angalia kama labda kama mimi kukimbia mpango huu na mstari amri hoja ni kazi. 250 00:12:14,244 --> 00:12:16,140 Ha, hakuna kosa segmentation huko. 251 00:12:16,140 --> 00:12:17,870 Ni tu aliniambia kuwa mimi figured nje. 252 00:12:17,870 --> 00:12:19,170 Hivyo labda hiyo ni kurekebisha hapa. 253 00:12:19,170 --> 00:12:27,560 Na hakika, kama mimi kwenda nyuma na kuangalia halisi chanzo kanuni kwa buggy1.c, 254 00:12:27,560 --> 00:12:31,180 inaonekana kana kwamba nini mimi kufanya ni Mimi nina kufanya wito kwa strcmp bila 255 00:12:31,180 --> 00:12:34,010 kuangalia kama kweli argv [1] lipo. 256 00:12:34,010 --> 00:12:36,730 Hii ni kweli chanzo kanuni kwa buggy1.c. 257 00:12:36,730 --> 00:12:38,855 Hivyo kile kwa kweli wanahitaji kufanya hapa kurekebisha mpango wangu, 258 00:12:38,855 --> 00:12:40,835 kuchukua nina faili mbele yangu, ni 259 00:12:40,835 --> 00:12:44,740 kwa kuongeza tu kuangalia kufanya kuhakikisha kwamba argc ni sawa na 2. 260 00:12:44,740 --> 00:12:47,780 Hivyo mfano huu, tena, kama nilivyosema, ni kidogo contrived, sawa? 261 00:12:47,780 --> 00:12:49,840 Wewe ni kwa ujumla si kwenda ajali kufuta chanzo kanuni yako 262 00:12:49,840 --> 00:12:51,820 na kisha kuwa na kujaribu na Debug mpango. 263 00:12:51,820 --> 00:12:53,120 Lakini hopefully, lilitoa wewe mfano 264 00:12:53,120 --> 00:12:55,120 ya aina ya mambo ambayo ungeweza kufikiria 265 00:12:55,120 --> 00:12:56,610 kama wewe ni debugging programu yako. 266 00:12:56,610 --> 00:12:58,760 >> Nini hali ya mambo hapa ni? 267 00:12:58,760 --> 00:13:00,510 Nini vigezo gani mimi kuwa kupatikana kwa mimi? 268 00:13:00,510 --> 00:13:03,600 Ambapo hasa ni mpango wangu crashing, juu ya nini line, 269 00:13:03,600 --> 00:13:05,240 juu ya nini wito kwa nini kazi? 270 00:13:05,240 --> 00:13:06,952 Ni aina gani ya dalili gani kwamba nipe? 271 00:13:06,952 --> 00:13:08,910 Na hii ndiyo hasa aina ya mawazo kwamba wewe 272 00:13:08,910 --> 00:13:12,820 lazima kuingia katika wakati uko kufikiria juu debugging programu yako. 273 00:13:12,820 --> 00:13:13,820 >> Mimi nina Doug Lloyd. 274 00:13:13,820 --> 00:13:16,140 Hii ni CS50. 275 00:13:16,140 --> 00:15:08,642