1 00:00:00,000 --> 00:00:00,309 2 00:00:00,309 --> 00:00:02,350 [? DAN ARMADARAS:] Hi, Saya [? Dan Armadaras?]. 3 00:00:02,350 --> 00:00:04,410 Hari ini, kita akan melihat kepada debugging. 4 00:00:04,410 --> 00:00:06,697 Bukan sahaja kita akan bercakap tentang beberapa teknik, 5 00:00:06,697 --> 00:00:09,280 tetapi juga kita akan melihat beberapa ciri-ciri yang terkandung 6 00:00:09,280 --> 00:00:14,170 dalam IDE CS50 yang membolehkan anda dengan mudah debug program. 7 00:00:14,170 --> 00:00:16,272 >> Hanya satu contoh sesuatu yang boleh pergi salah 8 00:00:16,272 --> 00:00:18,730 dan ia sebenarnya sesuatu yang kita telah lihat sebelum ini. 9 00:00:18,730 --> 00:00:23,200 Dalam kes ini, ini adalah satu program C yang menerima integer dari pengguna, 10 00:00:23,200 --> 00:00:27,580 membahagikan oleh dua, dan menyediakan output kembali kepada pengguna. 11 00:00:27,580 --> 00:00:30,610 Sekarang dari apa yang kita lihat sebelum ini dalam ceramah, 12 00:00:30,610 --> 00:00:34,370 kita tahu bahawa ini benar-benar akan menyebabkan jenis tertentu masalah bahagian 13 00:00:34,370 --> 00:00:35,860 apabila kita mempunyai nombor ganjil. 14 00:00:35,860 --> 00:00:40,330 >> Secara khusus, kita hanya akan membuang apa-apa selepas titik perpuluhan. 15 00:00:40,330 --> 00:00:43,170 Sekarang, kita tahu bahawa ini berlaku untuk menjadi kes itu. 16 00:00:43,170 --> 00:00:47,430 Dan jika kita berjalan, kita boleh mengesahkan syak wasangka kita, pertama, dengan menyusun. 17 00:00:47,430 --> 00:00:50,460 Dan kemudian, dengan menjalankan dan memasukkan nombor ganjil. 18 00:00:50,460 --> 00:00:51,720 >> Ini bukan perkara baru. 19 00:00:51,720 --> 00:00:54,490 Tetapi ini sebenarnya adalah contoh bug yang 20 00:00:54,490 --> 00:00:58,810 boleh wujud dalam program yang lebih besar yang menjadi lebih sukar untuk mengesan. 21 00:00:58,810 --> 00:01:02,640 Walaupun kita tahu apa isu adalah, pokok sebenar perkara itu 22 00:01:02,640 --> 00:01:06,250 mungkin cuba untuk mengenalpasti khusus di mana kesilapan itu berlaku, 23 00:01:06,250 --> 00:01:09,750 mengenal pasti apa masalah yang adalah, dan kemudian membetulkannya. 24 00:01:09,750 --> 00:01:14,400 Jadi menyediakan ini sebagai contoh apa yang mungkin menjadi sesuatu yang 25 00:01:14,400 --> 00:01:19,030 yang kita sudah tahu tetapi boleh dikebumikan dalam elemen-elemen lain kod. 26 00:01:19,030 --> 00:01:23,090 >> Jadi membuka sumber lain ini fail kod sebagai contoh, 27 00:01:23,090 --> 00:01:27,165 masalah bahagian ini kini sebahagian daripada program yang lebih besar. 28 00:01:27,165 --> 00:01:29,040 Masih mungkin sedikit agak tersusun, dan kami 29 00:01:29,040 --> 00:01:31,076 mungkin dapat dengan mudah mengenal pasti, terutamanya 30 00:01:31,076 --> 00:01:32,450 kerana kita hanya membincangkan ini. 31 00:01:32,450 --> 00:01:38,250 Tetapi kita boleh memikirkan bahawa ini masalah yang wujud di atas skala yang lebih besar. 32 00:01:38,250 --> 00:01:45,450 >> Jika saya menyusun ini dan kini menjalankannya, masukkan nombor ganjil, 33 00:01:45,450 --> 00:01:49,816 kita dapat melihat bahawa kita tidak mendapat tepat output yang kita mungkin telah dijangka. 34 00:01:49,816 --> 00:01:51,690 Dalam kes ini, kita mungkin mengatakan bahawa kita 35 00:01:51,690 --> 00:01:56,060 mahu mengira semua nombor dari satu sehingga ke nombor tertentu. 36 00:01:56,060 --> 00:01:58,130 Dan kita boleh lihat kita yang mempunyai pelbagai isu-isu 37 00:01:58,130 --> 00:02:03,880 di sini jika kita keluarkan, hanya, 0 dan 1 apabila kita memberi input 5. 38 00:02:03,880 --> 00:02:07,380 >> Oleh itu, kita sudah tahu bahawa ada masalah di sini. 39 00:02:07,380 --> 00:02:11,662 Tetapi kita tidak mengetahui dengan tepat di mana isu ini benar-benar wujud. 40 00:02:11,662 --> 00:02:13,620 Sekarang salah satu cara yang kita boleh cuba untuk menetapkan ini 41 00:02:13,620 --> 00:02:15,745 adalah sesuatu yang kami telah telah diperkenalkan kepada. 42 00:02:15,745 --> 00:02:18,880 Kami hanya boleh menggunakannya pada skala yang lebih besar. 43 00:02:18,880 --> 00:02:21,680 >> On line 14, kami mempunyai fungsi printf ini, 44 00:02:21,680 --> 00:02:25,620 yang membolehkan kita untuk mencetak negeri pelbagai cebisan maklumat. 45 00:02:25,620 --> 00:02:28,880 Dan ini adalah sesuatu yang anda perlu memanfaatkan dalam program anda 46 00:02:28,880 --> 00:02:33,100 cuba untuk mengetahui dengan tepat apa yang berlaku dalam pelbagai baris kod. 47 00:02:33,100 --> 00:02:36,350 Jadi, walaupun ini bukanlah output akhir yang kita benar-benar 48 00:02:36,350 --> 00:02:39,830 mahu melahirkan daripada program ini, kita masih 49 00:02:39,830 --> 00:02:42,300 mungkin mempunyai beberapa debug kenyataan di mana kita 50 00:02:42,300 --> 00:02:46,970 boleh cuba untuk mencari tahu dengan tepat apa yang yang berlaku di dalam kod kami. 51 00:02:46,970 --> 00:02:51,210 >> Jadi dalam kes ini, saya akan printf dengan tag debug. 52 00:02:51,210 --> 00:02:53,540 Dalam kes ini, ini adalah hanya rentetan debug 53 00:02:53,540 --> 00:02:56,840 bahawa saya up-meletakkan supaya ia menjadi sangat jelas dalam pengeluaran kod saya 54 00:02:56,840 --> 00:02:59,200 apa itu yang saya mahu untuk menunjukkan. 55 00:02:59,200 --> 00:03:04,410 Dan output di sini bilangan bahawa kita telah dikira. 56 00:03:04,410 --> 00:03:06,800 >> Dalam kes ini, saya mungkin ingin tahu dengan tepat 57 00:03:06,800 --> 00:03:11,380 apa yang berlaku sebelum dan selepas beberapa pengiraan tertentu. 58 00:03:11,380 --> 00:03:16,224 Jadi saya mungkin menggunakan printf sebelum dan selepas itu baris kod. 59 00:03:16,224 --> 00:03:18,640 Dalam kes ini, saya dapat walaupun membuat ia sedikit lebih jelas 60 00:03:18,640 --> 00:03:21,960 dengan mengatakan debug sebelum dan debug selepas begitu 61 00:03:21,960 --> 00:03:26,540 bahawa saya tidak mengelirukan diri saya dengan banyak baris yang kelihatan sama. 62 00:03:26,540 --> 00:03:32,290 >> Sekarang jika kita susun semula ini dan menjalankan , masukkan nombor yang seperti lima lagi, 63 00:03:32,290 --> 00:03:35,090 kita dapat melihat bahawa kita ada sekarang output sebelum dan selepas 64 00:03:35,090 --> 00:03:40,670 dan mendapati bahawa kita tidak melakukan yang jelas bahagian atau jelas mempunyai bilangan 65 00:03:40,670 --> 00:03:43,680 bahawa kita benar-benar mahu lakukan. 66 00:03:43,680 --> 00:03:48,660 Sekarang dalam kes ini, ini adalah tidak benar-benar output yang jelas. 67 00:03:48,660 --> 00:03:52,440 Ia tidak benar-benar keputusan yang jelas bahawa kita mahu keluar dari program ini tertentu. 68 00:03:52,440 --> 00:03:54,427 >> Dan ini adalah, sekali lagi, sedikit tersusun. 69 00:03:54,427 --> 00:03:57,510 Tetapi, mungkin, salah satu daripada perkara-perkara yang kita boleh lakukan jika penentuan itu berkata 70 00:03:57,510 --> 00:04:01,900 yang kita mahu untuk membahagikan ini dengan 2 dan menambah 1-- jadi dalam erti kata lain, 71 00:04:01,900 --> 00:04:04,550 kita bundarkan up-- kemudian kita akan mengetahui bahawa kita boleh 72 00:04:04,550 --> 00:04:08,060 melakukan perkara yang tertentu, dalam kes ini. 73 00:04:08,060 --> 00:04:14,010 Sekarang di sini kita tahu bahawa kita akan menjadi dapat menambah 1 kepada nombor separuh kami. 74 00:04:14,010 --> 00:04:16,490 >> Mari kita susun semula ini dan mengesahkan bahawa ini 75 00:04:16,490 --> 00:04:18,860 berkelakuan dengan cara yang kita mahu. 76 00:04:18,860 --> 00:04:21,980 Kita dapat melihat bahawa sekarang sebelum mempunyai, kami mempunyai nombor 5. 77 00:04:21,980 --> 00:04:26,620 Setelah, kami mempunyai nombor 3, yang mengikut spesifikasi kami, 78 00:04:26,620 --> 00:04:29,292 adalah apa yang kita mahu lakukan. 79 00:04:29,292 --> 00:04:31,000 Tetapi jika kita melihat output di sini, kita boleh 80 00:04:31,000 --> 00:04:33,760 melihat bahawa kita mungkin mempunyai satu lagi bug sama sekali, yang 81 00:04:33,760 --> 00:04:36,940 bahawa kita bermula kiraan kita dari 0. 82 00:04:36,940 --> 00:04:39,390 >> Kini sekali lagi, ini adalah sesuatu yang telah kita lihat pada masa lalu 83 00:04:39,390 --> 00:04:42,500 dan kita boleh menetapkan agak mudah. 84 00:04:42,500 --> 00:04:44,790 Tetapi dalam kes ini, kita juga mempunyai manfaat 85 00:04:44,790 --> 00:04:48,940 menggunakan pernyataan printf secara langsung di dalam satu gelung 86 00:04:48,940 --> 00:04:52,930 untuk mengetahui dengan tepat di mana kesilapan yang telah berlaku. 87 00:04:52,930 --> 00:04:55,150 Penyata Jadi printf adalah sangat berguna dalam membantu 88 00:04:55,150 --> 00:04:57,940 anda menentukan di mana, tepat dalam kod sumber anda, 89 00:04:57,940 --> 00:05:00,620 ralat tertentu berlaku. 90 00:05:00,620 --> 00:05:03,650 >> Dan ia juga penting untuk menyedari itu, seperti yang kita menulis kod, 91 00:05:03,650 --> 00:05:06,052 kita mungkin mempunyai andaian mengenai keadaan program. 92 00:05:06,052 --> 00:05:08,510 Atau kita mungkin mempunyai andaian tentang apa yang sebahagian daripada program 93 00:05:08,510 --> 00:05:13,020 sebenarnya betul atau tidak betul apabila kemudian seperti yang kita membina program yang 94 00:05:13,020 --> 00:05:15,950 dan menjadikannya sebahagian daripada kompleks dan program yang lebih besar 95 00:05:15,950 --> 00:05:19,700 yang kita sedar bahawa beberapa aspek daripada yang sebenarnya kereta. 96 00:05:19,700 --> 00:05:22,680 >> Menggunakan printf benar-benar boleh membantu menyempitkan dan mengenal pasti 97 00:05:22,680 --> 00:05:26,430 kawasan program yang tidak boleh akan berkelakuan dengan cara yang kita 98 00:05:26,430 --> 00:05:29,500 jangkakan, berdasarkan andaian kami. 99 00:05:29,500 --> 00:05:31,460 Tetapi ada alat-alat lain ada, juga, 100 00:05:31,460 --> 00:05:34,860 yang membolehkan kita untuk cuba untuk angka di mana kesilapan yang berlaku 101 00:05:34,860 --> 00:05:39,930 dan juga, khususnya, apa yang dilakukan sedang berlaku di dalam program ini. 102 00:05:39,930 --> 00:05:41,990 >> Jadi menggunakan printf adalah sangat apabila berguna kita mahu 103 00:05:41,990 --> 00:05:45,900 untuk mengenal pasti bidang-bidang tertentu satu program yang mempunyai beberapa bug. 104 00:05:45,900 --> 00:05:47,730 Tetapi ia juga menjadi membosankan selepas beberapa ketika. 105 00:05:47,730 --> 00:05:50,500 Dalam kes ini, ini adalah satu program yang agak mudah 106 00:05:50,500 --> 00:05:52,750 dengan hanya satu atau dua pembolehubah. 107 00:05:52,750 --> 00:05:57,260 Dan ia menjadi sangat mudah bagi kita untuk mencetak nilai pembolehubah-pembolehubah 108 00:05:57,260 --> 00:05:59,670 dalam konteks program yang lebih besar. 109 00:05:59,670 --> 00:06:02,670 >> Tetapi kita mungkin mempunyai yang berbeza program yang mempunyai banyak pembolehubah. 110 00:06:02,670 --> 00:06:06,530 Dan ia mungkin tidak cukup begitu mudah untuk digunakan printf 111 00:06:06,530 --> 00:06:10,120 cuba untuk menilai apa yang berlaku untuk setiap seorang daripada pembolehubah-pembolehubah 112 00:06:10,120 --> 00:06:13,590 kerana program ini melaksanakan. 113 00:06:13,590 --> 00:06:16,960 Ada satu program yang wujud dipanggil program penyahpepijat. 114 00:06:16,960 --> 00:06:20,320 Dalam kes ini, salah satu yang kita akan digunakan adalah penyahpepijat GNU, atau GDB, 115 00:06:20,320 --> 00:06:24,260 yang membolehkan kita untuk memeriksa dalaman cara kerja program yang dalam yang lebih 116 00:06:24,260 --> 00:06:25,700 cara terperinci. 117 00:06:25,700 --> 00:06:28,810 >> Kami benar-benar boleh melaksanakan GDB daripada baris arahan 118 00:06:28,810 --> 00:06:35,370 di sini dengan hanya menaip GDB dan arahan yang kita mahu untuk debug. 119 00:06:35,370 --> 00:06:37,550 Dalam kes ini, mengira. 120 00:06:37,550 --> 00:06:41,650 Sekarang dalam kes ini, kita boleh melihat bahawa ia membawa kita kepada gesaan yang mengatakan GDB. 121 00:06:41,650 --> 00:06:44,020 Dan kita boleh sebenarnya melaksanakan arahan untuk GDB 122 00:06:44,020 --> 00:06:48,260 untuk benar-benar mula pelaksanaan program, berhenti di tempat-tempat tertentu, 123 00:06:48,260 --> 00:06:51,060 menilai pembolehubah dan memeriksa pembolehubah yang 124 00:06:51,060 --> 00:06:54,152 wujud di negeri program pada saat itu, 125 00:06:54,152 --> 00:06:55,110 dan sebagainya dan sebagainya. 126 00:06:55,110 --> 00:06:57,240 Ia menyediakan banyak kuasa kepada kami. 127 00:06:57,240 --> 00:06:59,960 >> Tetapi ia hanya kebetulan yang IDE CS50 juga 128 00:06:59,960 --> 00:07:05,870 menyediakan GUI atau pengguna antara muka untuk GDB yang 129 00:07:05,870 --> 00:07:11,120 membolehkan kita untuk melakukan ini tanpa perlu antara muka baris arahan jua 130 00:07:11,120 --> 00:07:13,560 atau di semua walaupun. 131 00:07:13,560 --> 00:07:16,930 Cara yang saya boleh mengakses yang adalah dengan menggunakan butang debug 132 00:07:16,930 --> 00:07:20,120 di bahagian paling atas IDE CS50. 133 00:07:20,120 --> 00:07:24,280 Sekarang pada masa lalu, apa yang kita ada dilihat ialah kita menggunakan arahan 134 00:07:24,280 --> 00:07:27,660 talian untuk menyusun dan kemudian jalankan program. 135 00:07:27,660 --> 00:07:29,790 >> Butang debug tidak kedua-dua langkah-langkah. 136 00:07:29,790 --> 00:07:34,380 Tetapi ia juga akan mengangkut tab penyahpepijat jauh ke kanan 137 00:07:34,380 --> 00:07:38,280 yang membolehkan kita untuk memeriksa pelbagai hartanah program 138 00:07:38,280 --> 00:07:40,500 kerana ia melaksanakan. 139 00:07:40,500 --> 00:07:44,280 Jika saya klik debug pada yang demikian kes, ia akan membawa 140 00:07:44,280 --> 00:07:48,230 tab baru dalam konsol tingkap di bahagian paling bawah. 141 00:07:48,230 --> 00:07:51,160 >> Dan anda boleh melihat bahawa tab ini mempunyai beberapa maklumat di bahagian paling atas. 142 00:07:51,160 --> 00:07:52,670 Dan kita sebahagian besarnya boleh mengabaikan ini. 143 00:07:52,670 --> 00:07:54,800 Tetapi salah satu perkara yang bahawa kita mahu melihat 144 00:07:54,800 --> 00:07:57,170 adalah bahawa output perkara yang sama yang kita 145 00:07:57,170 --> 00:08:03,000 akan dapat jika kita cuba melarikan buat pada program C dalam tetingkap terminal. 146 00:08:03,000 --> 00:08:06,230 >> Di sini, kita dapat melihat ia berjalan dilafaz, dan ia mempunyai pelbagai bendera, 147 00:08:06,230 --> 00:08:12,660 dan ia menyusun fail count.c kami, yang merupakan tab yang dipilih pada masa yang 148 00:08:12,660 --> 00:08:15,100 yang saya memukul debug. 149 00:08:15,100 --> 00:08:18,010 Jadi ini adalah sangat berguna kerana kini menggunakan butang debug ini, 150 00:08:18,010 --> 00:08:23,280 kita pada masa yang sama boleh menyusun dan kemudian melaksanakan program yang kita benar-benar 151 00:08:23,280 --> 00:08:24,460 mahu menjalankan. 152 00:08:24,460 --> 00:08:27,880 >> Salah satu bendera yang penting, dalam kes ini, 153 00:08:27,880 --> 00:08:30,190 kami sebenarnya telah menggunakan untuk masa yang paling lama 154 00:08:30,190 --> 00:08:32,450 tetapi juga hanya melakukan tangan beberapa melambai [didengar], yang 155 00:08:32,450 --> 00:08:33,820 adalah salah satu ini di sini. 156 00:08:33,820 --> 00:08:35,790 Dalam dilafaz, ia berkata -ggdb3. 157 00:08:35,790 --> 00:08:38,570 158 00:08:38,570 --> 00:08:41,250 Dalam kes ini, apa yang kita memberitahu dilafaz, pengkompil kami, 159 00:08:41,250 --> 00:08:43,820 ialah kami mahu untuk menyusun program kami. 160 00:08:43,820 --> 00:08:46,810 Tetapi juga menyediakan apakah dipanggil maklumat simbol 161 00:08:46,810 --> 00:08:50,940 supaya pengkompil sebenarnya mempunyai akses kepada banyak maklumat asas 162 00:08:50,940 --> 00:08:52,610 yang terkandung dalam program ini. 163 00:08:52,610 --> 00:08:55,260 >> Lebih khusus lagi, bilangan fungsi yang saya ada, 164 00:08:55,260 --> 00:08:58,000 nama-nama mereka fungsi, pembolehubah, jenis-jenis 165 00:08:58,000 --> 00:09:01,730 bahawa orang-orang pembolehubah, dan pelbagai perkara-perkara lain yang membantu penyahpepijat 166 00:09:01,730 --> 00:09:04,350 melaksanakan operasinya. 167 00:09:04,350 --> 00:09:06,600 Sekarang ada sesuatu yang lain yang penting untuk menyebut 168 00:09:06,600 --> 00:09:10,280 apabila kita berbincang berjalan program dengan cara ini. 169 00:09:10,280 --> 00:09:13,660 >> Perhatikan bahawa ia sebenarnya mempunyai dibesarkan tab baru dalam konsol kami 170 00:09:13,660 --> 00:09:14,780 sepanjang bahagian bawah. 171 00:09:14,780 --> 00:09:18,600 Kita tidak lagi perlu berinteraksi terus dengan tetingkap terminal. 172 00:09:18,600 --> 00:09:21,420 Tetapi tab baru ini adalah sebenarnya tetingkap terminal. 173 00:09:21,420 --> 00:09:26,710 Ia hanya khusus untuk berjalan program yang telah kami buat. 174 00:09:26,710 --> 00:09:29,270 >> Perhatikan bahawa di bahagian bawah, dalam kombinasi dengan beberapa output 175 00:09:29,270 --> 00:09:33,500 oleh dilafaz penyusun dan GDB, yang kami sebahagian besarnya boleh mengabaikan, 176 00:09:33,500 --> 00:09:37,570 ia sebenarnya menunjukkan output program kami di bahagian paling bawah. 177 00:09:37,570 --> 00:09:41,240 Kini ia adalah penting untuk menyedari bahawa tingkap yang satu ini sebenarnya 178 00:09:41,240 --> 00:09:43,360 akan menunjukkan kepada anda output dari program anda 179 00:09:43,360 --> 00:09:47,190 tetapi juga boleh menerima input bagi program tersebut, juga. 180 00:09:47,190 --> 00:09:49,260 >> Jadi notis yang mengatakan sila masukkan nombor, 181 00:09:49,260 --> 00:09:53,050 yang merupakan output yang sama bahawa kita mempunyai mempunyai dalam tetingkap terminal sebelum ini. 182 00:09:53,050 --> 00:09:55,510 Tetapi ia kini ditunjukkan dalam tab baru ini. 183 00:09:55,510 --> 00:09:56,550 Saya boleh memasukkan nombor. 184 00:09:56,550 --> 00:10:00,900 Dan ia akan benar-benar fungsi seperti yang kita harapkan 185 00:10:00,900 --> 00:10:05,890 menunjukkan kepada kita debug kami, output, output yang mungkin kereta, 186 00:10:05,890 --> 00:10:07,010 seperti yang kita lihat sebelum ini. 187 00:10:07,010 --> 00:10:10,460 Dan pada yang bawah, ia sebenarnya mempunyai beberapa output tambahan 188 00:10:10,460 --> 00:10:14,550 daripada KDNK hanya mengatakan bahawa program ini telah selesai. 189 00:10:14,550 --> 00:10:16,655 >> Sekarang seperti yang anda lihat dalam ini jangka tertentu melalui, 190 00:10:16,655 --> 00:10:19,370 ia tidak begitu berguna kerana walaupun 191 00:10:19,370 --> 00:10:23,740 walaupun kita mempunyai menu penyahpepijat datang sehingga, ini adalah program berjalan masih. 192 00:10:23,740 --> 00:10:26,790 Tanpa titik yang berlaku sebenarnya berhenti seketika pelaksanaan untuk kita 193 00:10:26,790 --> 00:10:30,767 dapat memeriksa semua pembolehubah yang terkandung dalam. 194 00:10:30,767 --> 00:10:32,850 Ada sesuatu yang lain yang perlu kita lakukan untuk 195 00:10:32,850 --> 00:10:36,910 untuk mendapatkan GDB untuk menyedari bahawa kita mahu untuk berhenti seketika pelaksanaan program 196 00:10:36,910 --> 00:10:42,820 dan bukan hanya membenarkan ia untuk meneruskan biasanya kita akan dalam apa-apa hal lain. 197 00:10:42,820 --> 00:10:45,530 >> Dalam usaha untuk menghentikan sementara pelaksanaan, di beberapa laluan tertentu, 198 00:10:45,530 --> 00:10:47,830 kita perlu membuat apa yang dipanggil titik rehat. 199 00:10:47,830 --> 00:10:52,670 Dan titik rehat adalah sangat mudah dibuat dalam ini CS50 IDE dengan mengambil tetikus anda 200 00:10:52,670 --> 00:10:57,090 dan klik terus ke kiri beberapa nombor talian tertentu. 201 00:10:57,090 --> 00:10:59,920 Apabila saya berbuat demikian, satu titik merah muncul, yang menunjukkan 202 00:10:59,920 --> 00:11:02,300 bahawa garis yang kini merupakan titik pulang. 203 00:11:02,300 --> 00:11:07,540 >> Dan masa depan yang saya jalankan GDB, ia akan menghentikan pelaksanaan pada yang titik pulang 204 00:11:07,540 --> 00:11:10,280 apabila ia mencapai yang baris kod. 205 00:11:10,280 --> 00:11:12,230 Sekarang ini adalah penting perkara yang perlu sedar 206 00:11:12,230 --> 00:11:16,140 bahawa ia tidak semestinya kes setiap baris kod 207 00:11:16,140 --> 00:11:17,880 sebenarnya boleh akses. 208 00:11:17,880 --> 00:11:23,780 Jika saya membuat satu majlis di sini, untuk f-- tidak sah example-- 209 00:11:23,780 --> 00:11:31,230 dan hanya melakukan garis cetak sini-- hello world-- jika saya tidak pernah memanggil fungsi ini, 210 00:11:31,230 --> 00:11:34,770 ia akan menjadi kes itu, jika saya menetapkan titik rehat di sini, 211 00:11:34,770 --> 00:11:36,220 majlis itu tidak akan dipanggil. 212 00:11:36,220 --> 00:11:38,310 Oleh itu, ini titik pulang tertentu 213 00:11:38,310 --> 00:11:43,040 akan pernah benar-benar berhenti seketika pelaksanaan program ini. 214 00:11:43,040 --> 00:11:48,020 >> Jadi mari kita mengatakan bahawa saya betul mewujudkan titik rehat pada beberapa baris kod 215 00:11:48,020 --> 00:11:50,340 yang benar-benar akan dilaksanakan. 216 00:11:50,340 --> 00:11:53,470 Sekarang dalam kes ini, ini adalah baris pertama dalam fungsi utama. 217 00:11:53,470 --> 00:11:56,630 Oleh itu, ia pasti akan menjadi kes itu itu, sebaik sahaja saya mula pelaksanaan, 218 00:11:56,630 --> 00:11:58,580 baris pertama akan dicapai. 219 00:11:58,580 --> 00:12:00,230 GDB akan berhenti seketika pelaksanaan. 220 00:12:00,230 --> 00:12:04,100 Dan kemudian, saya akan dapat berinteraksi dengan penyahpepijat. 221 00:12:04,100 --> 00:12:08,480 >> Anda boleh menetapkan banyak baris sebagai titik putus, jika anda mahu. 222 00:12:08,480 --> 00:12:11,365 Kami juga boleh membuat garis sehingga sini dalam segmen ini kod 223 00:12:11,365 --> 00:12:12,490 yang tidak dapat dicapai. 224 00:12:12,490 --> 00:12:14,744 Dan kita juga boleh menetapkan satu lagi di bawah. 225 00:12:14,744 --> 00:12:16,660 Alasan bahawa kita akan mahu melakukan ini kita akan 226 00:12:16,660 --> 00:12:19,119 pergi ke lebih sedikit terperinci dalam hanya seketika. 227 00:12:19,119 --> 00:12:21,660 Jadi buat masa ini, biarlah saya hanya melumpuhkan ini mata break tambahan 228 00:12:21,660 --> 00:12:24,940 supaya kita boleh melihat apa yang berlaku apabila saya mempunyai satu rehat tunggal 229 00:12:24,940 --> 00:12:27,650 titik dalam program saya. 230 00:12:27,650 --> 00:12:29,410 Aku telah menempatkan sebahagian perubahan kepada program ini. 231 00:12:29,410 --> 00:12:30,750 Jadi saya perlu untuk menyimpannya. 232 00:12:30,750 --> 00:12:34,490 Saya akan klik debug supaya saya boleh memulakan penyusunan dan kemudian 233 00:12:34,490 --> 00:12:36,880 pelaksanaan penyahpepijat. 234 00:12:36,880 --> 00:12:40,632 >> Kita akan lihat bahawa, selepas detik-detik, yang garis yang kita dipilih sebagai rehat 235 00:12:40,632 --> 00:12:43,360 titik diserlahkan dengan warna kuning. 236 00:12:43,360 --> 00:12:47,440 Kita juga boleh melihat bahawa dalam kanan atas dalam panel debug 237 00:12:47,440 --> 00:12:50,940 ikon jeda telah bertukar menjadi ikon bermain sedikit. 238 00:12:50,940 --> 00:12:54,710 Ini bermakna bahawa kita mempunyai jeda pelaksanaan, dalam kes ini. 239 00:12:54,710 --> 00:12:57,840 Dan memukul butang Main akan membolehkan kita untuk meneruskan pelaksanaan 240 00:12:57,840 --> 00:13:00,000 pada titik tertentu. 241 00:13:00,000 --> 00:13:03,240 >> Perhatikan bahawa ada beberapa yang lain butang yang ada dalam panel debug ini, 242 00:13:03,240 --> 00:13:04,220 juga. 243 00:13:04,220 --> 00:13:09,470 Melangkah, yang membolehkan saya melaksanakan garis bahawa salah satu kod 244 00:13:09,470 --> 00:13:14,030 dan langkah ke garis kepada yang seterusnya, yang, dalam kes ini, 245 00:13:14,030 --> 00:13:17,060 bermakna printf kenyataan dilaksanakan. 246 00:13:17,060 --> 00:13:22,310 Dan ia kemudiannya akan berhenti seketika pelaksanaan atas line 13, seperti demikian. 247 00:13:22,310 --> 00:13:25,090 >> Dan juga ada langkah ke dalam fungsi, yang 248 00:13:25,090 --> 00:13:28,950 berguna jika saya telah mencipta lain fungsi di tempat lain dalam kod sumber. 249 00:13:28,950 --> 00:13:31,420 Dan saya mahu melangkah ke fungsi-fungsi dan bukan 250 00:13:31,420 --> 00:13:33,050 melaksanakan fungsi itu secara keseluruhannya. 251 00:13:33,050 --> 00:13:37,279 Tetapi kita akan kelihatan lebih pada langkah ke dalam fungsi dalam hanya seketika. 252 00:13:37,279 --> 00:13:40,320 Sekarang perhatikan beberapa perkara lain yang benar-benar wujud dalam panel debug ini. 253 00:13:40,320 --> 00:13:44,110 >> Kami mempunyai panel ini dipanggil memanggil timbunan, yang menunjukkan kepada kita 254 00:13:44,110 --> 00:13:45,300 di mana sebenarnya kita berada. 255 00:13:45,300 --> 00:13:48,550 Dalam kes ini, kita berada di dalam fungsi utama. 256 00:13:48,550 --> 00:13:50,880 Skrip kami dipanggil count.c. 257 00:13:50,880 --> 00:13:53,820 Dan kita berada di line 13, kolum satu, yang 258 00:13:53,820 --> 00:13:58,950 adalah tepat apa kawasan yang diserlahkan kod sumber itu menunjukkan, juga. 259 00:13:58,950 --> 00:14:02,435 >> Sekarang perhatikan bahawa ini juga menunjukkan di bawah seksyen pembolehubah tempatan 260 00:14:02,435 --> 00:14:06,710 semua pembolehubah yang wujud dalam fungsi ini. 261 00:14:06,710 --> 00:14:08,930 Adalah penting untuk ambil perhatian bahawa semua pembolehubah 262 00:14:08,930 --> 00:14:12,580 akan muncul dalam pembolehubah tempatan ini seksyen dalam fungsi, 263 00:14:12,580 --> 00:14:14,380 walaupun sebelum mereka ditetapkan. 264 00:14:14,380 --> 00:14:19,160 Kita boleh lihat di sini yang kita ada pembolehubah dipanggil num, mempunyai nilai lalai 0, 265 00:14:19,160 --> 00:14:21,280 dan ia adalah dari jenis int. 266 00:14:21,280 --> 00:14:24,110 >> Sekarang sebelum kita benar-benar memulakan semua pembolehubah ini, 267 00:14:24,110 --> 00:14:26,685 kita tidak semestinya dijamin melihat nilai 0. 268 00:14:26,685 --> 00:14:29,200 Dan bergantung kepada hukuman lain yang telah dilakukan 269 00:14:29,200 --> 00:14:32,020 dan keadaan memori anda apabila anda sebenarnya menjalankan program ini, 270 00:14:32,020 --> 00:14:34,605 anda mungkin mendapati bahawa anda tidak melihat nilai-nilai 0 271 00:14:34,605 --> 00:14:36,550 dan, sebaliknya, beberapa nombor gila lain. 272 00:14:36,550 --> 00:14:38,390 >> Tetapi jangan bimbang tentang perkara itu. 273 00:14:38,390 --> 00:14:44,610 Ia tidak akan menjadi relevan sehingga anda sebenarnya memulakan nilai. 274 00:14:44,610 --> 00:14:49,630 Sekarang dalam kes ini, kita dapat melihat bahawa Aku telah melaksanakan beberapa output. 275 00:14:49,630 --> 00:14:52,131 Dan saya, sekarang, dihentikan sementara pelaksanaan. 276 00:14:52,131 --> 00:14:53,880 Tetapi dalam kes ini, apa yang Saya benar-benar mahu lakukan 277 00:14:53,880 --> 00:14:58,060 adalah kini melangkah lebih garisan ini kod supaya saya boleh sebenarnya 278 00:14:58,060 --> 00:15:04,390 query pengguna untuk int bahawa kita hendak gunakan dalam program kami. 279 00:15:04,390 --> 00:15:07,060 >> Sekarang dalam kes ini, apabila Saya memukul melangkah, notis 280 00:15:07,060 --> 00:15:11,940 bahawa Jeda atau sebaliknya Sambung semula butang telah berubah ke butang Jeda ini 281 00:15:11,940 --> 00:15:14,022 kerana kod ini sebenarnya melaksanakan. 282 00:15:14,022 --> 00:15:15,730 Apa yang berlaku sekarang adalah bahawa ia adalah 283 00:15:15,730 --> 00:15:21,630 menunggu kita untuk input beberapa maklumat seperti yang kita boleh lihat dengan teks keluaran kami 284 00:15:21,630 --> 00:15:23,600 di bahagian paling bawah. 285 00:15:23,600 --> 00:15:25,787 >> Jadi sekarang, ini adalah sebenarnya tidak berhenti sebentar, 286 00:15:25,787 --> 00:15:28,620 walaupun, jenis, nampaknya menjadi kerana tiada apa yang berlaku. 287 00:15:28,620 --> 00:15:32,360 Tetapi ia hanya kebetulan bahawa dalam kes tertentu saya di talian 13, 288 00:15:32,360 --> 00:15:34,210 Saya menunggu input pengguna. 289 00:15:34,210 --> 00:15:39,130 Dan sebagainya GDB tidak dapat memeriksa program kerana ia berjalan. 290 00:15:39,130 --> 00:15:43,370 >> Sekarang masa yang akan datang bahawa saya memasukkan beberapa input-- jadi saya akan masukkan yang nombor 5, 291 00:15:43,370 --> 00:15:46,140 seperti yang kita lihat dalam past-- melanda Return, dan kami 292 00:15:46,140 --> 00:15:51,430 perhatian bahawa, serta-merta, menjeda GDB dan, sekali lagi, menonjolkan baris berikutnya. 293 00:15:51,430 --> 00:15:55,320 Tetapi notis bahawa sekarang, sebagai hasil kami memasukkan nilai, 294 00:15:55,320 --> 00:15:58,930 kami telah mengemas kini nilai itu dalam pembolehubah tempatan kita, yang 295 00:15:58,930 --> 00:16:05,560 adalah sangat berguna untuk mengetahui dengan tepat apa nombor yang berada di dalam ingatan. 296 00:16:05,560 --> 00:16:10,650 >> Sekarang saya boleh membenarkan program ini akan berterusan bermain sehingga akhir pelaksanaannya 297 00:16:10,650 --> 00:16:12,570 dengan memukul Resume. 298 00:16:12,570 --> 00:16:16,410 Kita dapat melihat bahawa dengan cepat tidak selesai program pelaksana 299 00:16:16,410 --> 00:16:19,790 dengan keluaran yang sama bahawa kita sebelum ini, penyahpepijat ditutup, 300 00:16:19,790 --> 00:16:23,170 dan kini program ini telah berhenti sepenuhnya. 301 00:16:23,170 --> 00:16:25,320 >> Saya menunjukkan bahawa hanya untuk maksud melihat apa 302 00:16:25,320 --> 00:16:27,280 yang berlaku apabila kita benar-benar melanda Resume. 303 00:16:27,280 --> 00:16:30,640 Tetapi kita benar-benar akan mahu kembali ke dalam program ini 304 00:16:30,640 --> 00:16:33,820 supaya kita boleh cuba untuk debug dengan tepat apa yang berlaku. 305 00:16:33,820 --> 00:16:37,980 Sekarang saya menggunakan penyahpepijat, saya boleh tidak perlu kenyataan-kenyataan ini debug printf. 306 00:16:37,980 --> 00:16:43,860 >> Jadi saya boleh mengeluarkan mereka seperti yang saya akan lakukan kini hanya untuk kembali ke kod kami lebih mudah 307 00:16:43,860 --> 00:16:45,950 bahawa kita mempunyai masa yang lalu. 308 00:16:45,950 --> 00:16:48,790 Sekarang apabila saya menyelamatkan program dan melaksanakannya, 309 00:16:48,790 --> 00:16:53,700 ia akan, sekali lagi, pergi ke awal yang memecahkan ketika itu saya di talian 11. 310 00:16:53,700 --> 00:16:57,700 Dan saya akan dapat untuk memeriksa pembolehubah saya kerana saya mahu lakukan. 311 00:16:57,700 --> 00:17:00,695 >> Ia hanya kebetulan bahawa ini sebahagian tidak begitu menarik, 312 00:17:00,695 --> 00:17:04,364 Dan saya tahu bahawa saya akan mencetak kenyataan ini. 313 00:17:04,364 --> 00:17:05,280 Sila masukkan nombor. 314 00:17:05,280 --> 00:17:08,099 Dan kemudian, saya tahu bahawa saya akan untuk meminta pengguna untuk integer itu. 315 00:17:08,099 --> 00:17:13,329 Jadi mungkin, saya benar-benar mahu bergerak saya memecahkan mata yang lebih jauh ke bawah. 316 00:17:13,329 --> 00:17:16,710 >> Anda boleh mengeluarkan mata break dengan mengklik, sekali lagi, secara langsung 317 00:17:16,710 --> 00:17:18,460 sebelah kiri yang nombor talian. 318 00:17:18,460 --> 00:17:22,200 Bahawa titik merah akan hilang, yang menunjukkan bahawa titik pulang sekarang sudah hilang. 319 00:17:22,200 --> 00:17:24,780 Sekarang dalam kes ini, pelaksanaan telah dihentikan sementara. 320 00:17:24,780 --> 00:17:27,770 Dan oleh itu tidak benar-benar akan menyambung semula dalam hal tersebut. 321 00:17:27,770 --> 00:17:30,210 Tetapi saya boleh menetapkan rehat menunjukkan sedikit kemudian. 322 00:17:30,210 --> 00:17:33,880 >> Dan apabila saya sekarang meneruskan saya kod, ia akan menyambung semula dan memberitahu 323 00:17:33,880 --> 00:17:36,190 titik yang titik pulang. 324 00:17:36,190 --> 00:17:37,374 Sekali lagi, saya memukul Resume. 325 00:17:37,374 --> 00:17:39,040 Tidak kelihatan seperti apa-apa yang berlaku. 326 00:17:39,040 --> 00:17:41,450 Tetapi itu kerana saya Kod sedang menunggu untuk input. 327 00:17:41,450 --> 00:17:47,900 Saya akan memasukkan nombor 5, tekan Enter, dan sekarang titik pulang seterusnya akan melanda. 328 00:17:47,900 --> 00:17:50,570 >> Sekarang dalam kes ini, ini adalah baris kod 329 00:17:50,570 --> 00:17:53,820 itu, sebelum ini, kita tahu kebetulan berada kereta. 330 00:17:53,820 --> 00:17:57,590 Jadi mari kita menilai apa yang berlaku pada ini masa tertentu. 331 00:17:57,590 --> 00:18:02,620 Apabila talian yang diserlahkan, ini talian masih belum dilaksanakan. 332 00:18:02,620 --> 00:18:06,490 Jadi dalam kes ini, kita dapat melihat bahawa saya mempunyai nombor, yang 333 00:18:06,490 --> 00:18:11,610 Saya mempunyai integer dipanggil num yang mempunyai nilai 5. 334 00:18:11,610 --> 00:18:15,090 Dan saya akan membuat persembahan beberapa matematik pada nombor itu. 335 00:18:15,090 --> 00:18:20,130 >> Jika saya melangkah lebih daripada itu, kita boleh melihat bahawa nilai untuk num 336 00:18:20,130 --> 00:18:23,780 telah berubah mengikut aritmetik yang kita telah benar-benar dilakukan. 337 00:18:23,780 --> 00:18:26,810 Dan kini bahawa kita adalah di dalam ini untuk gelung 338 00:18:26,810 --> 00:18:29,090 atau sekarang bahawa untuk gelung sendiri diserlahkan, 339 00:18:29,090 --> 00:18:32,450 kita melihat bahawa kita mempunyai baru pembolehubah dipanggil i yang 340 00:18:32,450 --> 00:18:35,370 akan digunakan dalam yang untuk gelung. 341 00:18:35,370 --> 00:18:38,230 >> Sekarang ingat sebelum saya yang menyebut bahawa kadang-kadang anda berada 342 00:18:38,230 --> 00:18:43,470 akan melihat beberapa jenis gila nombor sebagai lalai sebelum nombor yang 343 00:18:43,470 --> 00:18:45,530 atau pembolehubah yang sebenarnya dimulakan. 344 00:18:45,530 --> 00:18:49,040 Kita dapat melihat bahawa dengan tepat sini dalam pembolehubah ini 345 00:18:49,040 --> 00:18:51,345 dipanggil i, yang tidak mempunyai belum dimulakan 346 00:18:51,345 --> 00:18:53,560 pada masa menonjolkan. 347 00:18:53,560 --> 00:18:57,070 Tetapi kita boleh melihat bahawa ia mempunyai beberapa nombor bahawa kita tidak akan benar-benar harapkan. 348 00:18:57,070 --> 00:18:57,620 >> Tak apa. 349 00:18:57,620 --> 00:18:59,661 Jangan bimbang tentang hal itu kerana kita tidak benar-benar 350 00:18:59,661 --> 00:19:04,970 dimulakan jumlah itu sehingga saya melangkah lebih garisan ini dan nilai 351 00:19:04,970 --> 00:19:08,560 i telah dimulakan dengan nilai 1. 352 00:19:08,560 --> 00:19:11,400 Jadi untuk melihat bahawa yang sebenarnya kes itu, mari kita melangkah. 353 00:19:11,400 --> 00:19:14,420 Kini kita boleh melihat bahawa yang talian telah dilaksanakan. 354 00:19:14,420 --> 00:19:17,000 Dan kami kini menonjolkan ini selaras printf. 355 00:19:17,000 --> 00:19:22,230 >> Dan kini kita dapat melihat bagaimana nilai-nilai kita i dan 3 telah berubah dari masa ke masa. 356 00:19:22,230 --> 00:19:26,450 Ini adalah sangat berguna untuk dilakukan, sebenarnya, adalah untuk melangkah lebih garisan berulang kali. 357 00:19:26,450 --> 00:19:30,480 Dan anda boleh mencari apa yang sebenarnya yang berlaku di dalam gelung anda 358 00:19:30,480 --> 00:19:33,660 dan apa yang berlaku kepada pembolehubah dalam itu untuk gelung 359 00:19:33,660 --> 00:19:39,200 kerana itu pelaksanaan program berlaku satu langkah pada satu masa. 360 00:19:39,200 --> 00:19:41,110 >> Sekarang pada ketika ini, saya melangkah lebih hanya cukup 361 00:19:41,110 --> 00:19:44,210 bahawa saya kini adalah pada akhir program saya. 362 00:19:44,210 --> 00:19:46,980 Jika saya melangkah lebih daripada itu, ia akan sebenarnya berhenti pelaksanaan 363 00:19:46,980 --> 00:19:48,860 seperti yang kita lihat pada masa lalu. 364 00:19:48,860 --> 00:19:52,110 Biar saya mulakan semula ini, sekali lagi, supaya bahawa saya boleh menunjukkan sesuatu yang lain keluar, 365 00:19:52,110 --> 00:19:53,320 juga. 366 00:19:53,320 --> 00:19:55,350 >> Dalam kes ini, ia adalah kini meminta saya, sekali lagi, 367 00:19:55,350 --> 00:19:57,100 untuk beberapa, yang Saya akan, sekali lagi, masuk. 368 00:19:57,100 --> 00:20:00,300 Tetapi kali ini, saya akan masukkan ke dalam jumlah yang lebih besar supaya untuk gelung 369 00:20:00,300 --> 00:20:02,540 akan melelar kali lagi. 370 00:20:02,540 --> 00:20:06,090 Dalam kes ini, saya akan memasukkan nilai 11. 371 00:20:06,090 --> 00:20:08,390 >> Kini sekali lagi kerana saya menetapkan titik rehat di garisan 15, 372 00:20:08,390 --> 00:20:10,490 ia akan menonjolkan baris itu. 373 00:20:10,490 --> 00:20:12,980 Kita dapat melihat bahawa kami nombor 11 adalah betul 374 00:20:12,980 --> 00:20:15,560 diwakili dalam pembolehubah tempatan. 375 00:20:15,560 --> 00:20:22,460 Melangkah lebih daripada itu, kita boleh sekarang menonton apa yang berlaku kepada nilai kami i 376 00:20:22,460 --> 00:20:25,680 seperti yang kita meneruskan dalam ini untuk gelung. 377 00:20:25,680 --> 00:20:31,960 Ia mendapat incremented setiap kali kita sampai ke atas itu untuk gelung. 378 00:20:31,960 --> 00:20:35,110 >> Sekarang salah satu perkara-perkara yang mungkin berguna untuk dilakukan sepanjang pelaksanaan 379 00:20:35,110 --> 00:20:40,490 program ini adalah bagi saya untuk benar-benar menukar pertengahan pembolehubah untuk melihat 380 00:20:40,490 --> 00:20:42,450 apa yang berlaku kepada program saya. 381 00:20:42,450 --> 00:20:46,540 Dalam kes ini, saya boleh sebenarnya klik dua kali nilai. 382 00:20:46,540 --> 00:20:48,040 Perhatikan bahawa ia menjadi medan teks. 383 00:20:48,040 --> 00:20:50,280 >> Sekarang saya boleh memasukkan berbeza nilai sama sekali 384 00:20:50,280 --> 00:20:55,700 untuk melihat bagaimana program saya berkelakuan apabila saya telah mengubah pembolehubah itu. 385 00:20:55,700 --> 00:20:59,560 Sekarang dalam kes ini, pembolehubah i kini mengandungi nilai 10. 386 00:20:59,560 --> 00:21:02,810 Tetapi program ini masih berhenti dalam pelaksanaan. 387 00:21:02,810 --> 00:21:07,610 Apabila saya melangkah, saya melihat bahawa nilai i, yang saya dimasukkan sebagai 10, 388 00:21:07,610 --> 00:21:12,170 tidak lebih besar daripada nilai num, yang sebaik menyebabkan untuk gelung 389 00:21:12,170 --> 00:21:14,240 untuk menghentikan melaksanakan. 390 00:21:14,240 --> 00:21:16,210 >> Sekarang bukan satu-satunya sebab mengapa anda akan 391 00:21:16,210 --> 00:21:19,450 mahu mengubah pembolehubah di tempat. 392 00:21:19,450 --> 00:21:22,210 Anda sebenarnya mungkin mahu cuba untuk mengubahsuainya supaya 393 00:21:22,210 --> 00:21:24,590 anda boleh terus pelaksanaan gelung 394 00:21:24,590 --> 00:21:27,370 atau supaya anda boleh mengubah suai beberapa nilai sebelum ia 395 00:21:27,370 --> 00:21:32,630 mencapai beberapa set khusus aritmetik bahawa anda adalah kira-kira untuk melaksanakan. 396 00:21:32,630 --> 00:21:36,210 >> Jadi sekarang bahawa kita benar-benar mengubah nilai i sebagai program itu melaksanakan, 397 00:21:36,210 --> 00:21:39,540 ia menyebabkan untuk gelung untuk berhenti terlalu awal kerana, tiba-tiba, i 398 00:21:39,540 --> 00:21:42,770 kebetulan berada lebih besar daripada nilai daripada num, bermakna bahawa untuk gelung 399 00:21:42,770 --> 00:21:45,410 tidak lagi perlu dilaksanakan. 400 00:21:45,410 --> 00:21:48,780 Selain itu, ia berlaku untuk menjadi yang kes kita berubah nilai i 401 00:21:48,780 --> 00:21:53,270 apabila talian 17 telah diketengahkan, yang merupakan titik dalam masa 402 00:21:53,270 --> 00:21:56,280 bahawa bagi pelaksanaan gelung sebenarnya sedang dinilai. 403 00:21:56,280 --> 00:22:00,210 >> Jika saya telah berubah nilai i pada baris yang berbeza, mengatakan 19, 404 00:22:00,210 --> 00:22:03,360 kita akan dilihat berbeza tingkah laku kerana garis 19 akan 405 00:22:03,360 --> 00:22:08,310 telah dilaksanakan di hadapan gelung keadaan telah dinilai semula. 406 00:22:08,310 --> 00:22:11,900 Sekarang pada ketika ini, saya, sekali lagi, pada akhir program ini. 407 00:22:11,900 --> 00:22:15,707 Dan saya boleh membenarkan ini untuk meneruskan ke membolehkan program saya untuk berhenti secara semula jadi. 408 00:22:15,707 --> 00:22:18,290 Tetapi ada beberapa perkara yang penting untuk mengambil 409 00:22:18,290 --> 00:22:19,960 daripada perbincangan khusus ini. 410 00:22:19,960 --> 00:22:22,490 Anda perlu menilai andaian anda sendiri 411 00:22:22,490 --> 00:22:24,710 tentang bagaimana kod harus berkelakuan. 412 00:22:24,710 --> 00:22:28,220 Jika anda berfikir bahawa beberapa keping kod anda tahu berlaku untuk bekerja, 413 00:22:28,220 --> 00:22:30,940 yang mungkin menjadi bendera merah untuk pergi belakang dan menilai, dan pastikan 414 00:22:30,940 --> 00:22:33,470 bahawa andaian anda bagaimana kod yang beroperasi 415 00:22:33,470 --> 00:22:38,290 sebenarnya benar kepada bagaimana ia dinyatakan dalam kod sumber anda. 416 00:22:38,290 --> 00:22:41,300 >> Tetapi yang lebih penting lagi ialah, apabila kita menggunakan penyahpepijat, 417 00:22:41,300 --> 00:22:43,920 anda boleh meletakkan titik putus di garisan yang berbeza kod, 418 00:22:43,920 --> 00:22:48,110 yang akan menyebabkan penyahpepijat untuk berhenti seketika pelaksanaan pada setiap orang-orang garis 419 00:22:48,110 --> 00:22:52,210 supaya anda boleh menilai ingatan atau menukar di tempat. 420 00:22:52,210 --> 00:22:55,630 Dan sekali lagi, ingat bahawa anda boleh membuat beberapa titik putus supaya anda 421 00:22:55,630 --> 00:23:00,390 juga boleh meneruskan pelaksanaan, skip pada sebahagian besar kod, 422 00:23:00,390 --> 00:23:04,790 dan ia secara automatik akan berhenti seketika pada ketika rehat seterusnya. 423 00:23:04,790 --> 00:23:07,760 >> Ada sebenarnya yang lebih maju ciri-ciri penyahpepijat, juga. 424 00:23:07,760 --> 00:23:10,170 Tetapi kita perlu merujuk anda untuk beberapa video yang berikutnya 425 00:23:10,170 --> 00:23:14,090 untuk benar-benar mengusik selain bagaimana untuk menggunakan fungsi-fungsi tertentu. 426 00:23:14,090 --> 00:23:15,990 Buat masa ini, terima kasih banyak untuk menonton. 427 00:23:15,990 --> 00:23:18,080 Dan debugging nasib baik.