1 00:00:00,000 --> 00:00:05,640 2 00:00:05,640 --> 00:00:06,830 >> DOUG LLOYD: Bütün hüququ gdb. 3 00:00:06,830 --> 00:00:08,480 Məhz nədir? 4 00:00:08,480 --> 00:00:11,310 Dayanır belə gdb, GNU Debugger üçün, 5 00:00:11,310 --> 00:00:15,040 həqiqətən zəhmli vasitədir ki, biz edə bilərsiniz Bizim proqramları debug bizə kömək etmək üçün istifadə, 6 00:00:15,040 --> 00:00:18,210 və ya şeyi olduğu tapmaq bizim proqramları yanlış gedir. 7 00:00:18,210 --> 00:00:22,590 Gdb, qəribə güclü, lakin bu çıxış və qarşılıqlı 8 00:00:22,590 --> 00:00:23,830 bir az sirli ola bilər. 9 00:00:23,830 --> 00:00:28,210 Bu adətən bir command line alət var, və Bu sizə mesaj bir çox atmaq olar. 10 00:00:28,210 --> 00:00:31,144 Və bu cür ağır bilərsiniz gedən dəqiq nə analiz. 11 00:00:31,144 --> 00:00:33,560 Xoşbəxtlikdən, biz qəbul etdik addımlar sizin üçün bu problemi həll etmək 12 00:00:33,560 --> 00:00:36,281 CS50 vasitəsilə iş kimi. 13 00:00:36,281 --> 00:00:39,030 Siz qrafik istifadə edirsinizsə ayıklama, mənim həmkarım Dan 14 00:00:39,030 --> 00:00:41,570 Armandarse olduqca danışdı bir video haqqında bir az ki, 15 00:00:41,570 --> 00:00:44,740 burada olmalıdır İndi, sizə lazım ola bilər 16 00:00:44,740 --> 00:00:48,270 Bu command line istifadə etmək tools gdb ilə işləmək üçün. 17 00:00:48,270 --> 00:00:51,250 Siz CS50 iş edirsinizsə IDE, bunu etmək lazım deyil. 18 00:00:51,250 --> 00:00:53,550 Amma değilseniz CS50 IDE çalışan, 19 00:00:53,550 --> 00:00:55,750 bəlkə bir versiyasını istifadə edərək, CS50 Aracı ki, 20 00:00:55,750 --> 00:00:58,860 və ya başqa bir Linux əməliyyat gdb sistemi, bu yüklü 21 00:00:58,860 --> 00:01:00,980 istifadə etmək lazım ola bilər bu command line alətlər. 22 00:01:00,980 --> 00:01:02,860 >> Və ildən bilər bu ki, nə etmək lazımdır 23 00:01:02,860 --> 00:01:06,280 necə anlamaq üçün faydalı GDB skript satırı işləyir. 24 00:01:06,280 --> 00:01:09,650 Ancaq yenə də, siz değilseniz CS50 IDE istifadə edərək, siz 25 00:01:09,650 --> 00:01:15,400 qrafik ayıklama istifadə edə bilərsiniz ki, IDE daxil edilir. 26 00:01:15,400 --> 00:01:18,750 Belə şeylər ilə başlamaq üçün Gdb ayıklama başlamaq üçün 27 00:01:18,750 --> 00:01:21,220 xüsusi prosesi proqram, siz bütün lazım 28 00:01:21,220 --> 00:01:23,810 GDB təqib tipi Proqram adı ilə. 29 00:01:23,810 --> 00:01:28,620 Belə ki, məsələn, proqram əgər salam, siz gdb salam yazın ki. 30 00:01:28,620 --> 00:01:31,210 >> Bunu zaman, olacaq GDB mühit qoparmaq üçün. 31 00:01:31,210 --> 00:01:33,800 Sizin tez dəyişdirmək və əvəzinə olan adətən nə 32 00:01:33,800 --> 00:01:35,841 Siz hər şeyi yazın zaman command xətti ls da, 33 00:01:35,841 --> 00:01:38,115 Sizin tipik bütün cd-- Linux, sizin tez əmrləri 34 00:01:38,115 --> 00:01:42,200 , yəqin ki, bir şey dəyişəcək parantez kimi gdb parantez. 35 00:01:42,200 --> 00:01:46,630 Çünki, yeni gdb tez var Siz gdb mühit daxilində istəyirik. 36 00:01:46,630 --> 00:01:49,830 Sonra ki, ətraf mühit daxilində, iki əsas əmrləri var 37 00:01:49,830 --> 00:01:52,290 Siz yəqin ki, istifadə edəcəyik ki, aşağıdakı qaydada. 38 00:01:52,290 --> 00:01:55,200 >> ilk b, olan fasilə üçün qısa. 39 00:01:55,200 --> 00:01:58,690 Və b, adətən yazın sonra bir funksiyası adını yazın, 40 00:01:58,690 --> 00:02:01,040 və ya Bildiyiniz nə varsa nə line sayı ətrafında 41 00:02:01,040 --> 00:02:04,100 Proqram başlayır bir az qəribə davranmaq, 42 00:02:04,100 --> 00:02:06,370 Bir xətt yazın sıra həmçinin. 43 00:02:06,370 --> 00:02:09,660 Nə b, və ya fasilə yoxdur bu proqram imkan verir 44 00:02:09,660 --> 00:02:13,270 müəyyən bir nöqtəyə qədər çalıştırmak üçün, funksiyası, yəni adı 45 00:02:13,270 --> 00:02:15,880 belirttiğiniz və ya line olduğunu belirttiğiniz nömrəsi. 46 00:02:15,880 --> 00:02:18,590 >> Və o nöqtədə, onu icrası dondurmaq edəcək. 47 00:02:18,590 --> 00:02:21,670 Bu, çünki, həqiqətən yaxşı bir şey deyil icra dondurulub sonra, 48 00:02:21,670 --> 00:02:25,214 Siz çox yavaş-yavaş başlaya bilər proqram gezinmek. 49 00:02:25,214 --> 00:02:28,130 Siz olduğunuz əgər Adətən, çalışan Sizin proqramları, onlar olduqca qısa istəyirik. 50 00:02:28,130 --> 00:02:31,250 Adətən, siz dot çizgi yazın nə Proqram adı daxil edin hit 51 00:02:31,250 --> 00:02:33,470 və qırpmaq əvvəl, sizin Proqram artıq başa çatmışdır. 52 00:02:33,470 --> 00:02:36,620 Bu, həqiqətən cəhd çox vaxt deyil və yanlış gedir nə anlamaq. 53 00:02:36,620 --> 00:02:40,920 Bu, həqiqətən, hər şeyi yavaş etmək üçün belə aşağı b bir fasilə point qəbulu ilə, 54 00:02:40,920 --> 00:02:43,040 və sonra gücləndirməklə. 55 00:02:43,040 --> 00:02:46,169 >> Siz fasilə müəyyən etdik sonra bir dəfə point, proqram çalıştırabilirsiniz. 56 00:02:46,169 --> 00:02:47,960 Və hər hansı bir varsa command line dəlilləri, 57 00:02:47,960 --> 00:02:51,610 Siz burada müəyyən zaman Siz proqram adı gdb yazın. 58 00:02:51,610 --> 00:02:55,980 Siz bütün command line daxil r, və ya run alaraq dəlilləri, 59 00:02:55,980 --> 00:03:00,270 və sonra hər hansı command line dəlilləri Siz proqram daxilində lazımdır. 60 00:03:00,270 --> 00:03:03,510 Digər bir sıra həqiqətən var mühüm və faydalı əmrləri 61 00:03:03,510 --> 00:03:04,970 ÜDM-in ətraf mühit daxilində. 62 00:03:04,970 --> 00:03:07,540 Belə ki, yalnız tez mənə imkan bəziləri üzərində gedin. 63 00:03:07,540 --> 00:03:11,320 >> ilk, növbəti üçün qısa n edir və növbəti əvəzinə n yazın 64 00:03:11,320 --> 00:03:12,304 həm iş olardı. 65 00:03:12,304 --> 00:03:13,470 Və yalnız stenoqrafiya var. 66 00:03:13,470 --> 00:03:17,540 Və yəqin ki, artıq kazanılmış kimi şeyi yazın qadir olan üçün istifadə 67 00:03:17,540 --> 00:03:20,520 qısa ümumiyyətlə yaxşıdır. 68 00:03:20,520 --> 00:03:24,100 Və nə bunu edəcək lazımdır deyil kod irəli bir blok addım. 69 00:03:24,100 --> 00:03:26,170 Belə ki, irəli hərəkət edəcəyik bir funksiyası zəng qədər. 70 00:03:26,170 --> 00:03:28,350 Və sonra yerinə ki, funksiyası daxil dalış 71 00:03:28,350 --> 00:03:33,130 və funksiyaları bütün keçir indeksi, yalnız funksiyası olacaq. 72 00:03:33,130 --> 00:03:34,400 >> funksiyası adlanacaq. 73 00:03:34,400 --> 00:03:35,733 Onun iş nə lazımdırsa edəcəyik. 74 00:03:35,733 --> 00:03:38,870 Bu dəyər qayıdacaqlar adlı funksiyası. 75 00:03:38,870 --> 00:03:42,490 Və sonra üçün hərəkət edəcəyik ki, zəng funksiyası növbəti line. 76 00:03:42,490 --> 00:03:44,555 Addım istəyirsinizsə funksiyası daxilində, 77 00:03:44,555 --> 00:03:46,430 əvəzinə yalnız olan xüsusilə, icra 78 00:03:46,430 --> 00:03:50,004 Siz problem hesab edirəm ki, əgər ki, funksiyası daxilində yalan bilər, 79 00:03:50,004 --> 00:03:52,670 Siz, əlbəttə, bir fasilə təyin edə bilər daxilində funksiyası qeyd. 80 00:03:52,670 --> 00:03:57,820 Əgər siz artıq yayınlıyorsanız və ya, siz kod irəli bir xətt addım s istifadə edin. 81 00:03:57,820 --> 00:04:01,170 >> Belə ki, bu addım olacaq və funksiyaları daxil dive, 82 00:04:01,170 --> 00:04:04,750 əvəzinə yalnız icra var və funksiyası davam 83 00:04:04,750 --> 00:04:07,380 Siz ayıklama üçün istəyirik ki. 84 00:04:07,380 --> 00:04:09,870 Əgər bilmək istəyirsinizsə dəyişən dəyəri, 85 00:04:09,870 --> 00:04:12,507 Siz p, və ya çap edə bilərsiniz, və sonra dəyişən adı. 86 00:04:12,507 --> 00:04:15,090 Və sizə çap edəcək GDB ətraf mühit daxilində, 87 00:04:15,090 --> 00:04:19,110 dəyişən adı ki, Səninlə me-- dəyişən dəyəri bəhanə 88 00:04:19,110 --> 00:04:20,064 adlı etdik ki. 89 00:04:20,064 --> 00:04:23,230 Hər dəyərləri bilmək istəyirsinizsə burada yerli dəyişən əlçatan 90 00:04:23,230 --> 00:04:25,970 Hal-hazırda olan sizin proqram, siz info yerli edəbilərsiniz. 91 00:04:25,970 --> 00:04:28,332 Bu çox sürətli var sonra p yazaraq və nə olursa olsun, 92 00:04:28,332 --> 00:04:30,540 bütün həyata listing Siz mövcud bilirik dəyişənlər. 93 00:04:30,540 --> 00:04:34,370 Siz info yerli yazın və bu edə bilərsiniz sizin üçün hər şeyi çap edəcək. 94 00:04:34,370 --> 00:04:37,770 Sonrakı qədər olan bt edir Back Trace üçün qısa. 95 00:04:37,770 --> 00:04:41,680 İndi, ümumiyyətlə, xüsusilə erkən CS50, 96 00:04:41,680 --> 00:04:44,450 Siz, həqiqətən, münasibətilə olmayacaq BT, və ya geri iz istifadə etmək, 97 00:04:44,450 --> 00:04:47,860 funksiyaları olan deyilik, çünki digər funksiyaları zəng. 98 00:04:47,860 --> 00:04:50,450 >> Siz əsas zəng bir ola bilər funksiyası, lakin yəqin ki, var. 99 00:04:50,450 --> 00:04:53,199 Siz digər funksiyası yoxdur başqa bir funksiyası, zəng edən 100 00:04:53,199 --> 00:04:54,880 başqa bir funksiyası çağırır, və s. 101 00:04:54,880 --> 00:04:57,550 Lakin proqramları daha çox almaq kimi kompleks, xüsusilə 102 00:04:57,550 --> 00:05:00,290 iş başlamaq zaman recursion ilə geri iz 103 00:05:00,290 --> 00:05:05,150 imkan üçün həqiqətən faydalı şəkildə ola bilər cür üçün bəzi kontekstində almaq 104 00:05:05,150 --> 00:05:06,460 Mən proqramı edirəm. 105 00:05:06,460 --> 00:05:10,590 Belə ki, sizin kodu yazdıq demək və Siz əsas bir funksiyası çağırır bilirik ki, 106 00:05:10,590 --> 00:05:14,720 bir funksiyası çağırır f, funksiyası h çağırır g. 107 00:05:14,720 --> 00:05:17,650 Beləliklə, biz bir neçə qat var quş balası burada olur. 108 00:05:17,650 --> 00:05:19,440 >> Siz daxilində əgər Sizin gdb ətraf mühit, 109 00:05:19,440 --> 00:05:21,640 və sizin daxili bilirik saat, ancaq unutmaq 110 00:05:21,640 --> 00:05:27,210 Siz harada siz var nə haqqında Siz BT, və ya geri iz yazın are--, 111 00:05:27,210 --> 00:05:32,370 və bu, h, q həyata əsas f çap edəcək bəzi digər məlumatlar yanaşı olan 112 00:05:32,370 --> 00:05:35,984 bir ipucu verir ki, OK əsas adlı f adlı g f, g, h adlı 113 00:05:35,984 --> 00:05:37,900 və harada Mən Hal-hazırda mənim proqramı edirəm. 114 00:05:37,900 --> 00:05:41,380 Belə ki, həqiqətən faydalı ola bilər xüsusilə gdb sirli-biznes kimi 115 00:05:41,380 --> 00:05:45,667 , bir az böyük olur hər şeyi tam olaraq harada tapmaq. 116 00:05:45,667 --> 00:05:48,500 Nəhayət, proqram görülən zaman, Bitirdiğinizde və ya ayıklama 117 00:05:48,500 --> 00:05:50,125 və üz addım istəyirəm gdb mühitdən, 118 00:05:50,125 --> 00:05:51,940 bu çıxmaq necə bilmək kömək edir. 119 00:05:51,940 --> 00:05:55,500 Siz q yazın və ya çıxmaq üçün, tərk edə bilər. 120 00:05:55,500 --> 00:05:59,220 İndi, bu gün Videonu əvvəl Mən arabası proqram hazırladı 121 00:05:59,220 --> 00:06:03,900 Mən tərtib adlı buggy1, buggy1.c kimi tanınan faylı. 122 00:06:03,900 --> 00:06:06,500 Siz bu gözləyə bilər kimi Proqram fakt arabası var. 123 00:06:06,500 --> 00:06:08,990 Bir şey yanlış gedir Mən cəhd və çalıştırın. 124 00:06:08,990 --> 00:06:13,014 İndi təəssüf ki, səhvən Mənim buggy1.c fayl silindi 125 00:06:13,014 --> 00:06:15,930 belə qaydada mənə anlamaq üçün nə bu proqram ilə yanlış gedir 126 00:06:15,930 --> 00:06:18,770 Mən istifadə etmək üçün gedirəm GDB cür kor-koranə, çalışır 127 00:06:18,770 --> 00:06:22,372 Bu proqram gezinmek üçün yanlış gedir nə anlamaq. 128 00:06:22,372 --> 00:06:24,580 Amma vasitələrdən istifadə biz artıq haqqında öyrəndim 129 00:06:24,580 --> 00:06:27,700 biz olduqca çox anlamaq olar bu dəqiq nə. 130 00:06:27,700 --> 00:06:30,740 Belə ki, üzərində rəhbərlik edək CS50 IDE və bir göz var. 131 00:06:30,740 --> 00:06:33,155 OK, belə ki, biz buradayıq my CS50 IDE ətraf mühit, 132 00:06:33,155 --> 00:06:35,697 və mən bir az zoom lazımdır belə ki, bir az daha çox ola bilər. 133 00:06:35,697 --> 00:06:38,530 Mənim terminal pəncərə, mən siyahısını əgər Mənim cari direktoru məzmunu 134 00:06:38,530 --> 00:06:41,250 ls, biz ki, mən görürsünüz mənbə faylları bir neçə var 135 00:06:41,250 --> 00:06:44,982 Burada, o cümlədən əvvəllər buggy1 müzakirə olunub. 136 00:06:44,982 --> 00:06:46,940 Nə dəqiq zaman gedir Mən cəhd və buggy1 axır. 137 00:06:46,940 --> 00:06:47,773 Yaxşı tapmaq imkan verir. 138 00:06:47,773 --> 00:06:52,510 Mən dot çizgi növü arabası, mən Enter düyməsini basın. 139 00:06:52,510 --> 00:06:53,670 >> Seqmentasiya çatışmazlıqlar. 140 00:06:53,670 --> 00:06:55,000 Bu yaxşı deyil. 141 00:06:55,000 --> 00:06:57,180 Siz geri varsa, seqmentasiya günah adətən 142 00:06:57,180 --> 00:07:01,540 biz yaddaş daxil zaman baş verir biz toxunmaq icazə deyilik ki. 143 00:07:01,540 --> 00:07:03,820 Biz elə əldə etdik hüdudlarından kənarda 144 00:07:03,820 --> 00:07:05,995 nə proqramı, compiler bizə verdi. 145 00:07:05,995 --> 00:07:08,310 Və belə artıq bir ipucu Toolbox saxlamaq üçün 146 00:07:08,310 --> 00:07:10,660 biz ayıklama prosesi başlayacaq kimi. 147 00:07:10,660 --> 00:07:13,620 Something burada bir az yanlış keçmişdir. 148 00:07:13,620 --> 00:07:15,935 >> Bütün hüquqlar, belə edək start GDB ətraf mühitə qədər 149 00:07:15,935 --> 00:07:19,030 biz anlamaq bilər görmek dəqiq problemdir. 150 00:07:19,030 --> 00:07:21,674 Mən ekran sil gedirəm və mən gdb yazın gedirəm 151 00:07:21,674 --> 00:07:24,340 yenə gdb mühit daxil etmək, və proqram adı 152 00:07:24,340 --> 00:07:27,450 Mən buggy1 debug etmək istəyirəm ki,. 153 00:07:27,450 --> 00:07:30,182 Biz oxu, bir az mesaj almaq buggy1 simvolları, görülən. 154 00:07:30,182 --> 00:07:32,390 O deməkdir ki, bütün bu çıxardı deyil birlikdə bütün kodu, 155 00:07:32,390 --> 00:07:35,570 və indi instantly edilmişdir Gdb, və getmək üçün hazır. 156 00:07:35,570 --> 00:07:37,140 >> İndi mən nə istəyirəm? 157 00:07:37,140 --> 00:07:39,130 Siz nə xatırlayıram yoxdur ilk addım adətən 158 00:07:39,130 --> 00:07:42,540 Mən bu mühitdə daxilində deyiləm sonra? 159 00:07:42,540 --> 00:07:44,540 Ümid edirəm ki, müəyyən etdi fasilə point, çünki 160 00:07:44,540 --> 00:07:46,240 əslində mən bunu istəyirəm nə. 161 00:07:46,240 --> 00:07:47,990 İndi yoxdur bu mənbə kodu 162 00:07:47,990 --> 00:07:50,948 Önümdə olan yəqin ki, tipik istifadə halda, yolu ilə. 163 00:07:50,948 --> 00:07:52,055 Siz yəqin ki, olacaq. 164 00:07:52,055 --> 00:07:52,680 Belə ki, yaxşı. 165 00:07:52,680 --> 00:07:55,790 Amma fərz deyil, nə etmək Bildiyiniz bir funksiyası 166 00:07:55,790 --> 00:07:58,880 hər bir C proqram mövcuddur? 167 00:07:58,880 --> 00:08:04,420 Nə böyük və ya necə mürəkkəb Bu, bu funksiya mütləq mövcuddur. 168 00:08:04,420 --> 00:08:05,440 Main, sağ? 169 00:08:05,440 --> 00:08:08,870 >> Belə ki, bütün başqa, biz bilər uğursuz əsas bir fasilə nöqtəsini qurmaq. 170 00:08:08,870 --> 00:08:12,200 Və yenə, mən yalnız yazın bilər əvəzinə b, əsas pozub. 171 00:08:12,200 --> 00:08:14,650 Və siz maraqlı olduğunuz halda, əgər Heç bir uzun komanda həyata yazın 172 00:08:14,650 --> 00:08:16,800 və sonra ki, həyata yanlış şey tipli, 173 00:08:16,800 --> 00:08:18,770 və xilas olmaq istəyirik bütün Mən yalnız kimi, 174 00:08:18,770 --> 00:08:22,029 Siz olan, Control U bilər hər şeyi silmək və sizə geri gətirmək 175 00:08:22,029 --> 00:08:23,570 kursor xətləri əvvəlinə. 176 00:08:23,570 --> 00:08:26,569 Yalnız basıb saxlayın çox daha sürətli bir çox silmək və ya bir dəstə dəfə vuraraq 177 00:08:26,569 --> 00:08:27,080 üzərində. 178 00:08:27,080 --> 00:08:28,740 >> Belə ki, biz əsas bir fasilə nöqtəsini qurmaq lazımdır. 179 00:08:28,740 --> 00:08:32,970 Və Gördüyünüz kimi, biz var deyir fayl buggy1.c bir fasilə nöqtəsini qurmaq, 180 00:08:32,970 --> 00:08:36,330 və yəqin ilk line Əsas kodu xətti yeddi. 181 00:08:36,330 --> 00:08:38,080 Yenə yoxdur Burada mənbə fayl, 182 00:08:38,080 --> 00:08:40,429 ancaq ki, güman lazımdır Mənə həqiqəti söyləyirəm. 183 00:08:40,429 --> 00:08:44,510 Və sonra, mən yalnız çalışıram və r, proqram run. 184 00:08:44,510 --> 00:08:45,360 Proqram başlayaraq. 185 00:08:45,360 --> 00:08:48,160 Bütün hüquqlar, belə ki, bu mesajı bir az sirli edir. 186 00:08:48,160 --> 00:08:50,160 Lakin əsasən nə Burada baş verən yalnız var edir 187 00:08:50,160 --> 00:08:53,350 Mən fasilə təşkil etdik mənə izah point, break point sayı 1. 188 00:08:53,350 --> 00:08:55,877 >> Və sonra, kodu ki, xətt, Belə fayl vəya qovluq yoxdur. 189 00:08:55,877 --> 00:08:57,710 yeganə səbəbi ki, Hesab edirəm ki, mesaj görüyorum 190 00:08:57,710 --> 00:09:00,800 Mən səhvən çünki Mənim buggy.c fayl silindi. 191 00:09:00,800 --> 00:09:04,050 Mənim buggy1.c fayl mövcud əgər cari kataloq, 192 00:09:04,050 --> 00:09:06,920 orada həqiqətən ki line sağ mənə nə kodu xətt 193 00:09:06,920 --> 00:09:08,214 sözün deyilir. 194 00:09:08,214 --> 00:09:09,380 Təəssüf ki, mən bunu silindi. 195 00:09:09,380 --> 00:09:14,790 Biz növ getmək üçün var olacaq daha kor-koranə bu bir az vasitəsilə. 196 00:09:14,790 --> 00:09:17,330 >> OK, belə ki, görək, nə Mən burada nə etmək istəyirsiniz? 197 00:09:17,330 --> 00:09:21,770 Yaxşı, mən yerli nə bilmək istəyirəm dəyişənlər bəlkə mənim üçün mövcuddur. 198 00:09:21,770 --> 00:09:23,570 Mən proqram açılmış etdik. 199 00:09:23,570 --> 00:09:28,515 Nin ola bilər nə görmək edək artıq bizim üçün başlatılmış. 200 00:09:28,515 --> 00:09:31,430 Mən Info yerli, heç bir yerli yazın. 201 00:09:31,430 --> 00:09:33,960 Bütün hüquqlar ki, deyil, belə ki, Mənə informasiya ton verir. 202 00:09:33,960 --> 00:09:37,600 Mən cəhd və bir dəyişən çap edə bilər, amma heç bir dəyişən adlarını bilmirəm. 203 00:09:37,600 --> 00:09:39,930 Mən geri iz cəhd edə bilər, amma əsas daxilində deyiləm, 204 00:09:39,930 --> 00:09:43,710 belə ki, mən deyil bilirik İndi bir funksiyası zəng. 205 00:09:43,710 --> 00:09:47,710 >> Mənim yalnız variantları kimi belə görünür n və ya istifadə və dalış başlamaq üçün. 206 00:09:47,710 --> 00:09:49,630 Mən n istifadə gedirəm. 207 00:09:49,630 --> 00:09:51,180 Belə ki, n yazın. 208 00:09:51,180 --> 00:09:53,060 Gosh Aman, nə burada davam edir. 209 00:09:53,060 --> 00:09:56,260 Program siqnalları qəbul SIGSEGV seqmentasiya günah, 210 00:09:56,260 --> 00:09:57,880 və sonra məhsullarının bütün dəstə. 211 00:09:57,880 --> 00:09:58,880 Mən artıq overwhelmed edirəm. 212 00:09:58,880 --> 00:10:00,980 Bəli, həqiqətən var bir çox burada öyrənildi. 213 00:10:00,980 --> 00:10:02,520 Belə ki, nə bu bizə nə deyir? 214 00:10:02,520 --> 00:10:09,180 Nə bizə deyir, bu proqram deyil, haqqında, lakin hələ seg günah. 215 00:10:09,180 --> 00:10:12,550 Və xüsusilə, mən gedirəm daha burada zoom, 216 00:10:12,550 --> 00:10:18,980 bu barədə seg günah haqqında bir şey strcmp çağırıb. 217 00:10:18,980 --> 00:10:22,705 >> İndi biz müzakirə ola bilər geniş fəaliyyət göstərir. 218 00:10:22,705 --> 00:10:25,580 Biz fikrində deyilik, çünki is-- hər funksiyası haqqında danışmaq ki, 219 00:10:25,580 --> 00:10:28,610 C standart mövcuddur kitabxana lakin onlar sizin üçün bütün mövcud istəyirik 220 00:10:28,610 --> 00:10:32,110 Bir almaq, xüsusilə də əgər reference.cs50.net baxmaq. 221 00:10:32,110 --> 00:10:35,000 Və strcmp həqiqətən güclü daxili mövcud funksiyası 222 00:10:35,000 --> 00:10:38,070 string.h header bir mövzu fayl, 223 00:10:38,070 --> 00:10:41,970 funksiyaları həsr olunur faylı ilə iş və strings manipulyasiya. 224 00:10:41,970 --> 00:10:49,830 >> Və xüsusilə, nə strcmp yoxdur edir iki strings dəyərlər müqayisə edir. 225 00:10:49,830 --> 00:10:54,160 Beləliklə, mən Seqmentasiya günah haqqında Ben zəng görünür strcmp üçün. 226 00:10:54,160 --> 00:10:58,530 Mən n edib və əslində mən mesajı almaq proqram siqnal SIGSEGV ilə xitam 227 00:10:58,530 --> 00:11:01,370 seqmentasiya günah. Belə ki, indi Mən, həqiqətən, seg faulted var, 228 00:11:01,370 --> 00:11:06,479 və proqram olduqca var çox səmərəli imtina. 229 00:11:06,479 --> 00:11:07,770 Bu proqramın sonu. 230 00:11:07,770 --> 00:11:10,370 Bu pozuldu, bu qəzaya uğrayıb. 231 00:11:10,370 --> 00:11:14,740 Belə ki, bir çox deyil idi, lakin mən həqiqətən kifayət qədər bir az öyrənmək idi 232 00:11:14,740 --> 00:11:16,747 bu kiçik təcrübə. 233 00:11:16,747 --> 00:11:17,580 Mən nə öyrəndim? 234 00:11:17,580 --> 00:11:22,020 Bəli, mənim proqram qəzaları dərhal olduqca çox. 235 00:11:22,020 --> 00:11:26,300 Mənim proqram qəzaları bir strcmp zəng, amma 236 00:11:26,300 --> 00:11:30,560 hər hansı yerli dəyişənlər yoxdur mənim Yeməyini zamanda proqram. 237 00:11:30,560 --> 00:11:37,320 Belə ki, nə string, və ya strings, Mən bəlkə müqayisə ola bilər. 238 00:11:37,320 --> 00:11:42,140 Mən heç bir yerli yoxsa dəyişənlər, güc 239 00:11:42,140 --> 00:11:45,520 bəlkə bir mən var yaxşıdır ki, təxmin doğru ola bilər qlobal dəyişən. 240 00:11:45,520 --> 00:11:47,670 >> Amma, ümumiyyətlə, görünür Mən müqayisə edirəm 241 00:11:47,670 --> 00:11:52,070 mövcud deyil ki, bir şey. 242 00:11:52,070 --> 00:11:54,130 Belə ki, araşdırmaq imkan bir az daha ki. 243 00:11:54,130 --> 00:11:55,120 Beləliklə, mən ekran sil gedirəm. 244 00:11:55,120 --> 00:11:57,536 Mən həyata çıxmaq üçün gedirəm Ikinci gdb mühit. 245 00:11:57,536 --> 00:12:01,300 Mən OK, düşüncə deyiləm, var mənim proqram heç bir yerli dəyişənlərin. 246 00:12:01,300 --> 00:12:06,444 Mən keçmək güman edirəm bəlkə görəsən bir command line arqument kimi simli. 247 00:12:06,444 --> 00:12:07,610 Belə ki, yalnız bu test imkan verir. 248 00:12:07,610 --> 00:12:09,020 Mən əvvəl bu həyata yoxdur. 249 00:12:09,020 --> 00:12:14,244 >> Mən bu proqram run bəlkə əgər in nəzər salaq bir command line arqumenti ilə işləyir. 250 00:12:14,244 --> 00:12:16,140 Huh, heç seqmentasiyası günah. 251 00:12:16,140 --> 00:12:17,870 Bu, sadəcə mən bunu həyata fiqurlu ki, mənə. 252 00:12:17,870 --> 00:12:19,170 Belə ki, bəlkə ki, fix burada. 253 00:12:19,170 --> 00:12:27,560 Mən geri getmək və əgər həqiqətən baxmaq buggy1.c faktiki mənbə kodu, 254 00:12:27,560 --> 00:12:31,180 edirəm nə olsa kimi görünür Mən olmadan strcmp zəng edilməsi alıram 255 00:12:31,180 --> 00:12:34,010 əslində argv [1] mövcud olub-olmadığını yoxlanılması. 256 00:12:34,010 --> 00:12:36,730 Bu, həqiqətən deyil buggy1.c üçün mənbə kodu. 257 00:12:36,730 --> 00:12:38,855 Beləliklə, mən, həqiqətən, ehtiyac nə mənim proqram düzeltmek üçün burada nə, 258 00:12:38,855 --> 00:12:40,835 fərz Mən , mənə qarşısında fayl 259 00:12:40,835 --> 00:12:44,740 yalnız etmək üçün bir çek əlavə etmək əmin argc 2 bərabərdir. 260 00:12:44,740 --> 00:12:47,780 Belə ki, bu nümunə yenə, dediyim kimi sağ, bir az göstərdi edir? 261 00:12:47,780 --> 00:12:49,840 Siz, ümumiyyətlə, fikrində deyilik təsadüfən sizin mənbə kodu silmək 262 00:12:49,840 --> 00:12:51,820 və sonra cəhd var və proqram debug. 263 00:12:51,820 --> 00:12:53,120 Amma ümid edirəm ki, bu, verdi Bir illüstrasiya 264 00:12:53,120 --> 00:12:55,120 şeyi növ ki, haqqında düşünür ola bilər 265 00:12:55,120 --> 00:12:56,610 kimi proqram ayıklama edirik. 266 00:12:56,610 --> 00:12:58,760 >> Burada işlər dövlət nədir? 267 00:12:58,760 --> 00:13:00,510 Nə dəyişənlər I do Mənə əlçatan var? 268 00:13:00,510 --> 00:13:03,600 Dəqiq mənim proqram nə xəttində, şaqqıltılı, 269 00:13:03,600 --> 00:13:05,240 nə funksiyası nə zəng haqqında? 270 00:13:05,240 --> 00:13:06,952 Ipuçları hansı ki, mənə verir? 271 00:13:06,952 --> 00:13:08,910 Və dəqiq zehniyyət cür ki, 272 00:13:08,910 --> 00:13:12,820 Siz etdiyiniz zaman əldə edilməlidir Sizin proqramları ayıklama haqqında düşünür. 273 00:13:12,820 --> 00:13:13,820 >> Mən Doug Lloyd edirəm. 274 00:13:13,820 --> 00:13:16,140 Bu CS50 edir. 275 00:13:16,140 --> 00:15:08,642