[? DAN ARMADARAS:?] Hi, Saya m [? Dan Armadaras?]. Hari ini, kita akan akan melihat debugging. Tidak hanya kita akan berbicara tentang beberapa teknik, tetapi juga kita akan melihat beberapa fitur yang terdapat dalam IDE CS50 yang memungkinkan Anda untuk dengan mudah men-debug program. Salah satu contoh sesuatu yang bisa salah dan itu sebenarnya sesuatu bahwa kita sudah lihat sebelumnya. Dalam hal ini, program ini adalah program C yang menerima integer dari pengguna, membaginya dengan dua, dan menyediakan output kembali ke pengguna. Sekarang dari apa yang telah kita lihat awal kuliah, kita tahu bahwa ini benar-benar akan menyebabkan tipe tertentu dari masalah divisi ketika kita memiliki angka ganjil. Secara khusus, kami hanya akan membuang apapun setelah titik desimal. Sekarang, kita tahu bahwa ini terjadi menjadi kasus. Dan jika kita menjalankannya, kita dapat mengkonfirmasi kecurigaan kami, pertama, dengan menyusun. Dan kemudian, dengan menjalankan dan memasuki ganjil. Ini bukan hal yang baru. Tapi ini sebenarnya merupakan contoh bug yang bisa ada dalam program yang lebih besar yang menjadi lebih sulit untuk melacak. Meskipun kita tahu apa masalah adalah, inti sebenarnya dari masalah ini mungkin mencoba untuk mengidentifikasi khusus di mana kesalahan terjadi, mengidentifikasi apa masalah itu adalah, dan kemudian memperbaikinya. Jadi memberikan ini sebagai contoh apa mungkin sesuatu bahwa kita sudah tahu tapi bisa dikuburkan dalam unsur-unsur lain dari kode. Jadi membuka sumber lain ini Kode file sebagai contoh, Masalah pembagian ini sekarang bagian dari program yang lebih besar. Masih mungkin sedikit bit dibikin, dan kami mungkin bisa dengan mudah mengidentifikasi, terutama karena kami hanya membahas ini. Tapi kita tahu bahwa ini Masalah bisa berada pada skala yang lebih besar. Jika saya mengkompilasi ini dan sekarang menjalankannya, masukkan angka ganjil, kita dapat melihat bahwa kita tidak mendapatkan tepatnya output yang kita mungkin telah diharapkan. Dalam kasus ini, kita bisa mengatakan bahwa kita ingin menghitung semua nomor dari satu hingga beberapa nomor tertentu. Dan kita dapat melihat bahwa kita memiliki berbagai masalah sini jika kita keluaran, hanya, 0 dan 1 ketika kita memberikan masukan dari 5. Jadi kita sudah tahu bahwa ada masalah di sini. Tapi kita mungkin tidak tahu persis di mana masalah ini benar-benar ada. Sekarang salah satu cara yang kita dapat mencoba untuk memperbaiki ini adalah sesuatu yang kita sudah telah diperkenalkan ke. Kami hanya dapat menggunakannya pada skala yang lebih besar. On line 14, kita memiliki Fungsi printf ini, yang memungkinkan kita untuk mencetak negara berbagai potongan informasi. Dan ini adalah sesuatu yang Anda harus memanfaatkan dalam program Anda mencoba untuk mencari tahu persis apa yang terjadi di berbagai baris kode. Jadi bahkan jika ini bukan hasil akhir yang kita benar-benar ingin menghasilkan dari program ini, kami masih mungkin memiliki beberapa men-debug pernyataan di mana kita dapat mencoba untuk mencari tahu persis apa yang terjadi di dalam kode kami. Jadi dalam hal ini, saya akan printf dengan tag debug. Dalam hal ini, ini hanya debug string bahwa aku up-menempatkan sehingga menjadi sangat jelas dalam output dari kode saya apa yang saya ingin menunjukkan. Dan output di sini nomor bahwa kita telah dihitung. Dalam hal ini, aku mungkin ingin tahu persis apa yang terjadi sebelum dan setelah beberapa perhitungan tertentu. Jadi saya bisa menggunakan printf sebelum dan setelah itu baris kode. Dalam hal ini, saya bahkan bisa membuatnya sedikit lebih jelas dengan mengatakan men-debug sebelum dan debug setelah begitu bahwa saya tidak bingung sendiri dengan beberapa baris yang terlihat identik. Sekarang jika kita mengkompilasi ulang ini dan menjalankan itu, masukkan nomor seperti lima lagi, kita dapat melihat bahwa kita memiliki sekarang keluaran sebelum dan sesudah dan menemukan bahwa kita tidak melakukan jelas divisi atau yang jelas memiliki nomor tersebut bahwa kita benar-benar ingin lakukan. Sekarang dalam kasus ini, ini tidak benar-benar output yang jelas. Ini tidak benar-benar hasil yang jelas bahwa kami ingin keluar dari program khusus ini. Dan ini, sekali lagi, sedikit dibikin. Tapi, mungkin, salah satu hal yang kita bisa lakukan jika spesifikasi mengatakan bahwa kita ingin membagi ini dengan 2 dan menambahkan 1-- jadi dengan kata lain, kami ingin melengkapi up-- kemudian kita mungkin tahu bahwa kita bisa melakukannya hal tertentu, dalam hal ini. Sekarang di sini kita tahu bahwa kita akan mampu menambah 1 ke nomor dibelah dua kami. Mari kita ulang ini dan mengkonfirmasi bahwa ini berperilaku dengan cara yang kita ingin. Kita bisa melihat bahwa sekarang sebelum memiliki, kita memiliki nomor 5. Setelah, kami memiliki nomor 3, yang sesuai dengan spesifikasi kami, adalah apa yang kita ingin lakukan. Tetapi jika kita melihat output di sini, kita bisa melihat bahwa kita mungkin memiliki lain bug sama sekali, yang merupakan bahwa kita mulai menghitung kami dari 0. Sekarang lagi, ini adalah sesuatu bahwa kita telah melihat di masa lalu dan kita bisa memperbaikinya cukup mudah. Tapi dalam kasus ini, kita juga memiliki manfaat menggunakan pernyataan printf langsung dalam untuk loop untuk tahu persis di mana kesalahan yang terjadi. Laporan Jadi printf adalah sangat berguna dalam membantu Anda menentukan di mana, tepatnya di kode sumber Anda, kesalahan tertentu terjadi. Dan itu juga penting untuk menyadari itu, seperti yang kita menulis kode, kita mungkin memiliki asumsi tentang keadaan program. Atau kita mungkin memiliki asumsi tentang apa bagian dari program sebenarnya benar atau salah ketika nanti seperti yang kita membangun program yang dan menjadikannya bagian dari kompleks dan program yang lebih besar bahwa kita menyadari bahwa beberapa aspek dari yang sebenarnya kereta. Menggunakan printf benar-benar dapat membantu mempersempit dan mengidentifikasi daerah dari sebuah program yang mungkin tidak akan berperilaku persis seperti yang kita berharap, berdasarkan asumsi kami. Tapi ada alat-alat lain tersedia, juga, yang memungkinkan kita untuk mencoba untuk angka tahu di mana kesalahan terjadi dan juga, secara khusus, hal apa yang terjadi di dalam program. Jadi menggunakan printf sangat ketika kita ingin berguna untuk mengidentifikasi daerah-daerah tertentu sebuah program yang memiliki beberapa bug. Tapi itu juga menjadi membosankan setelah beberapa saat. Dalam hal ini, ini adalah Program yang relatif sederhana hanya dengan satu atau dua variabel. Dan itu menjadi sangat mudah bagi kita untuk mencetak nilai variabel dalam konteks program yang lebih besar. Tapi kita mungkin memiliki berbeda program yang memiliki banyak variabel. Dan hal itu mungkin tidak cukup sehingga mudah digunakan printf mencoba untuk mengevaluasi apa yang terjadi untuk masing-masing dari variabel-variabel sebagai program mengeksekusi. Ada program yang ada disebut program debugger. Dalam hal ini, salah satu yang kita akan penggunaan adalah debugger GNU, atau GDB, yang memungkinkan kita untuk memeriksa internal kerja program dalam jauh lebih cara rinci. Kami benar-benar bisa menjalankan GDB dari baris perintah di sini dengan hanya mengetik GDB dan perintah yang ingin kita untuk debug. Dalam hal ini, menghitung. Sekarang dalam kasus ini, kita dapat melihat bahwa itu membawa kita ke prompt yang mengatakan GDB. Dan kita bisa benar-benar menjalankan perintah untuk GDB untuk benar-benar memulai pelaksanaan Program, menghentikannya pada titik-titik tertentu, mengevaluasi variabel dan memeriksa variabel yang ada dalam program negara pada saat itu, dan sebagainya dan sebagainya. Ini memberikan banyak kekuatan untuk kita. Tapi kebetulan bahwa CS50 IDE juga menyediakan GUI atau pengguna interface untuk GDB yang memungkinkan kita untuk melakukan hal ini tanpa perlu antarmuka baris perintah apapun atau bahkan sama sekali. Cara yang saya dapat mengakses adalah dengan menggunakan tombol men-debug di bagian paling atas dari IDE CS50. Sekarang di masa lalu, apa yang kita miliki dilihat adalah bahwa kita menggunakan perintah line untuk mengkompilasi dan kemudian menjalankan program. Tombol men-debug tidak kedua langkah tersebut. Tetapi juga akan memunculkan debugger tab di paling kanan yang memungkinkan kita untuk memeriksa berbagai sebuah sifat program seperti yang mengeksekusi. Jika saya klik debug, dalam hal ini kasus, hal itu akan memunculkan tab baru di konsol jendela di bagian paling bawah. Dan Anda dapat melihat bahwa tab ini memiliki beberapa informasi di bagian paling atas. Dan kami sebagian besar dapat mengabaikan hal ini. Tapi salah satu hal bahwa kita ingin melihat adalah bahwa itu output hal yang sama bahwa kita akan dapatkan jika kita mencoba untuk menjalankan make pada program C di jendela terminal. Di sini, kita bisa melihat itu berjalan dentang, dan memiliki berbagai bendera, dan itu kompilasi berkas count.c kami, yang merupakan tab yang dipilih pada saat itu bahwa aku memukul debug. Jadi ini sangat berguna karena sekarang menggunakan tombol debug, kita secara bersamaan dapat mengkompilasi dan kemudian mengeksekusi program yang kita benar-benar ingin menjalankan. Salah satu bendera yang penting, dalam hal ini, kita sudah benar-benar telah menggunakan untuk waktu yang lama tetapi juga hanya melakukan beberapa tangan melambaikan [tak terdengar], yang adalah salah satu ini di sini. Dalam dentang, ia mengatakan -ggdb3. Dalam hal ini, apa yang kita mengatakan dentang, kompiler kami, adalah bahwa kita ingin mengkompilasi program kami. Tetapi juga memberikan apa yang disebut informasi simbol sehingga compiler sebenarnya memiliki akses untuk banyak informasi yang mendasari terkandung dalam program ini. Lebih khusus, nomor fungsi yang saya miliki, nama-nama fungsi-fungsi, variabel, jenis yang variabel tersebut adalah, dan varietas hal-hal lain yang membantu debugger melakukan operasinya. Sekarang ada hal lain yang penting untuk menyebutkan ketika kita membahas berjalan program dengan cara ini. Perhatikan bahwa ia memiliki sebenarnya dibesarkan tab baru di konsol kami sepanjang bagian bawah. Kami tidak lagi harus berinteraksi langsung dengan jendela terminal. Tapi tab baru ini sebenarnya jendela terminal. Itu hanya khusus untuk menjalankan program yang telah kita buat. Perhatikan bahwa di bagian bawah, di kombinasi dengan beberapa output oleh dentang compiler dan GDB, yang kita sebagian besar dapat mengabaikan, itu benar-benar menunjukkan output dari program kami di bagian paling bawah. Sekarang penting untuk menyadari bahwa jendela ini yang benar-benar akan menunjukkan Output dari program Anda tetapi juga dapat menerima input untuk program itu, juga. Jadi pernyataan yang menyebutkan masukkan nomor, yang merupakan output yang sama yang kita miliki telah di jendela terminal sebelumnya. Tapi sekarang ditampilkan di tab baru ini. Saya dapat memasukkan nomor. Dan itu akan benar-benar fungsi seperti yang kita harapkan menunjukkan kita men-debug kami, output, output yang mungkin kereta, seperti yang telah kita lihat sebelumnya. Dan di bagian paling bawah, itu sebenarnya memiliki beberapa output tambahan dari PDB hanya mengatakan bahwa Program ini telah selesai. Sekarang seperti yang Anda lihat dalam run khususnya melalui, itu tidak terlalu berguna karena bahkan meskipun kami memiliki menu debugger datang up, ini masih program berjalan. Pada titik itu tidak benar-benar jeda eksekusi bagi kami untuk dapat memeriksa semua variabel yang terkandung dalam. Ada sesuatu yang lain yang harus kita lakukan dalam rangka untuk mendapatkan GDB untuk mengakui bahwa kita ingin untuk menghentikan sementara eksekusi program dan tidak hanya memungkinkan untuk melanjutkan biasanya seperti yang kita akan dalam hal lain. Dalam rangka untuk menghentikan sementara eksekusi, di beberapa baris tertentu, kita perlu membuat apa disebut titik istirahat. Dan titik istirahat sangat mudah dibuat dalam hal ini CS50 IDE dengan mengambil mouse Anda dan mengklik langsung ke kiri beberapa nomor baris tertentu. Setelah saya melakukan itu, titik merah muncul, yang menunjukkan bahwa garis yang sekarang menjadi titik istirahat. Dan waktu berikutnya yang saya jalankan GDB, itu akan menghentikan eksekusi pada titik istirahat saat mencapai bahwa baris kode. Sekarang ini adalah penting hal untuk mewujudkan bahwa itu belum tentu kasus bahwa setiap baris kode sebenarnya diakses. Jika saya harus membuat fungsi di sini, untuk example-- batal f-- dan hanya melakukan baris cetak sini-halo dunia-- jika saya tidak pernah memanggil fungsi ini, itu akan menjadi kasus yang, jika saya menetapkan titik istirahat di sini, fungsi akan pernah disebut. Dan oleh karena itu, ini break point tertentu tidak akan pernah benar-benar berhenti eksekusi program. Jadi mari kita mengatakan bahwa saya benar membuat break point pada beberapa baris kode yang akan benar-benar dijalankan. Sekarang dalam kasus ini, ini adalah baris pertama dalam fungsi utama. Sehingga pasti akan terjadi itu, segera setelah saya mulai eksekusi, baris pertama akan tercapai. GDB akan berhenti eksekusi. Dan kemudian, aku akan dapat berinteraksi dengan debugger. Anda dapat mengatur beberapa baris sebagai breakpoints, jika Anda ingin. Kami juga dapat membuat line up di sini di segmen ini kode yang tidak akan pernah tercapai. Dan kita juga dapat mengatur satu lebih lanjut di bawah. Alasan bahwa kita akan ingin melakukan hal ini kita akan masuk ke sedikit lebih rinci dalam sesaat. Jadi untuk saat ini, saya hanya menonaktifkan istirahat tambahan titik-titik sehingga kita dapat melihat apa yang terjadi ketika saya memiliki satu break titik dalam program saya. Saya telah membuat beberapa perubahan program ini. Jadi saya harus menyimpannya. Aku akan men-debug klik sehingga saya bisa mulai kompilasi dan kemudian pelaksanaan debugger. Kita akan melihat bahwa, setelah saat, garis yang kita terpilih sebagai istirahat Titik disorot dengan warna kuning. Kita juga dapat melihat bahwa di atas tepat di panel men-debug bahwa ikon jeda telah berubah menjadi ikon bermain sedikit. Ini berarti bahwa kita memiliki jeda eksekusi, dalam kasus ini. Dan memukul tombol Play akan memungkinkan kita untuk melanjutkan eksekusi pada titik tertentu. Perhatikan bahwa ada beberapa lainnya tombol yang tersedia di panel debug, demikian juga. Langkah lebih, yang memungkinkan saya untuk mengeksekusi bahwa satu baris kode dan langkah ke baris ke berikutnya, yang, dalam hal ini, akan berarti bahwa printf pernyataan dieksekusi. Dan kemudian akan berhenti eksekusi pada baris 13, seperti begitu. Dan ada juga langkah ke dalam fungsi, yang berguna jika saya telah membuat lainnya fungsi lain dalam kode sumber. Dan saya ingin melangkah ke fungsi-fungsi daripada mengeksekusi fungsi yang secara keseluruhan. Tapi kita akan melihat lebih pada langkah yang ke dalam fungsi hanya dalam beberapa saat. Sekarang perhatikan beberapa hal lain yang benar-benar ada dalam panel debug. Kami memiliki panel ini disebut panggilan stack, yang menunjukkan kepada kita di mana tepatnya kita berada. Dalam hal ini, kita berada di dalam dari fungsi utama. Script kami disebut count.c. Dan kita kebetulan berada di baris 13, kolom satu, yang adalah tepat apa wilayah disorot dari kode sumber menunjukkan, juga. Sekarang perhatikan bahwa ini juga menunjukkan di bawah bagian variabel lokal semua variabel yang ada dalam fungsi ini. Sangat penting untuk dicatat bahwa semua variabel akan muncul dalam variabel lokal ini Bagian dalam fungsi, bahkan sebelum mereka didefinisikan. Kita bisa lihat di sini bahwa kita memiliki variabel disebut num, memiliki nilai default 0, dan itu adalah tipe int. Sekarang sebelum kita benar-benar menginisialisasi semua variabel, kita tidak perlu dijamin untuk melihat nilai 0. Dan tergantung pada eksekusi lain bahwa Anda telah melakukan dan keadaan memori Anda ketika Anda benar-benar menjalankan program ini, Anda mungkin menemukan bahwa Anda tidak melihat nilai 0 dan, sebaliknya, beberapa nomor gila lainnya. Tapi jangan khawatir tentang itu. Ini tidak akan menjadi relevan sampai Anda benar-benar menginisialisasi nilai. Sekarang dalam kasus ini, kita dapat melihat bahwa Saya telah melakukan beberapa output. Dan aku, sekarang, berhenti eksekusi. Tapi dalam kasus ini, apa Aku benar-benar ingin melakukan adalah untuk sekarang melangkahi garis ini kode sehingga saya benar-benar bisa query pengguna untuk itu int yang kita ingin menggunakan dalam program kami. Sekarang dalam kasus ini, ketika Aku memukul melangkahi, pemberitahuan bahwa Jeda atau lebih tepatnya Resume tombol telah berubah menjadi tombol Pause ini karena kode ini sebenarnya mengeksekusi. Apa yang terjadi sekarang adalah bahwa hal itu menunggu kita untuk memasukkan beberapa informasi seperti yang kita dapat melihat dengan teks output kami di bagian paling bawah. Jadi sekarang, ini adalah tidak benar-benar berhenti, meskipun itu, semacam, muncul menjadi karena tidak ada yang terjadi. Tapi kebetulan bahwa dalam kasus tertentu saya on line 13, Aku sedang menunggu input pengguna. Dan GDB tidak mampu memeriksa program seperti yang berjalan. Sekarang waktu berikutnya yang saya masukkan beberapa input-- jadi saya akan memasukkan nomor 5, seperti yang kita lihat dalam past-- tekan Kembali, dan kami melihat bahwa, segera, GDB jeda dan, sekali lagi, menyoroti baris berikutnya. Tapi melihat bahwa sekarang, sebagai Hasil kami memasukkan nilai, kami telah memperbarui nilai yang dalam variabel lokal kami, yang sangat berguna untuk mengetahui secara tepat apa nomor yang ada di memori. Sekarang saya bisa memungkinkan program ini untuk terus bermain sampai akhir pelaksanaannya dengan memukul Lanjutkan. Kita bisa melihat bahwa sangat cepat tidak selesai Program mengeksekusi dengan output yang sama bahwa kita sebelumnya, debugger menutup, dan sekarang program ini telah berhenti sepenuhnya. Saya menunjukkan bahwa hanya untuk tujuan melihat apa terjadi ketika kita benar-benar memukul Lanjutkan. Tapi kita benar-benar akan ingin kembali ke dalam program ini sehingga kita dapat mencoba untuk debug tepatnya apa yang terjadi. Sekarang bahwa saya menggunakan debugger, saya mungkin tidak perlu debug laporan printf ini. Jadi saya bisa menghapusnya karena saya akan melakukan sekarang hanya untuk kembali ke kode sederhana kami bahwa kita memiliki beberapa saat yang lalu. Sekarang ketika saya menyimpan program dan jalankan, akan, lagi, pergi ke awal yang istirahat saat itu saya harus on line 11. Dan saya akan dapat memeriksa variabel saya seperti yang saya ingin lakukan. Kebetulan yang ini bagian tidak sangat menarik, Dan aku tahu bahwa aku akan untuk mencetak pernyataan ini. Silakan masukkan nomor. Dan kemudian, aku tahu bahwa aku akan untuk meminta pengguna untuk integer yang. Jadi mungkin, aku benar-benar ingin pindah saya titik istirahat sedikit lebih bawah. Anda dapat menghapus break point dengan mengklik, sekali lagi, langsung di sebelah kiri yang nomor baris. Itu titik merah akan hilang, menunjukkan bahwa break point sekarang hilang. Sekarang dalam kasus ini, eksekusi telah berhenti. Dan sehingga tidak benar-benar akan melanjutkan dalam contoh khusus. Tapi aku bisa mengatur istirahat menunjukkan sedikit kemudian. Dan ketika saya sekarang melanjutkan saya kode, akan melanjutkan dan memberitahu titik titik istirahat. Sekali lagi, aku memukul Lanjutkan. Tidak tampak seperti ada sesuatu yang terjadi. Tapi itu karena saya Kode menunggu masukan. Saya akan memasukkan nomor 5, tekan Enter, dan sekarang titik istirahat berikutnya akan terkena. Sekarang dalam kasus ini, ini adalah baris kode bahwa, sebelumnya, kami tahu kebetulan kereta. Jadi mari kita mengevaluasi apa yang terjadi pada titik tertentu dalam waktu. Ketika garis disorot, ini garis belum dieksekusi. Jadi dalam hal ini, kita dapat melihat bahwa saya memiliki nomor, yang Saya memiliki sebuah integer disebut num yang memiliki nilai 5. Dan aku akan tampil beberapa matematika di nomor itu. Jika saya melangkah lebih dari itu, kita dapat melihat bahwa nilai num telah berubah sesuai dengan aritmatika bahwa kita sudah benar-benar dilakukan. Dan sekarang bahwa kita dalam hal ini untuk loop atau sekarang bahwa untuk loop sendiri disorot, kita melihat bahwa kita memiliki baru variabel yang disebut i yang akan digunakan dalam untuk loop. Sekarang ingat sebelum itu saya disebutkan bahwa kadang-kadang Anda akan melihat beberapa jenis gila nomor sebagai default sebelum nomor yang atau variabel yang sebenarnya diinisialisasi. Kita bisa melihat bahwa justru di sini di variabel ini disebut i, yang belum belum diinisialisasi pada saat menyoroti. Tapi kita dapat melihat bahwa ia memiliki beberapa nomor bahwa kita tidak akan benar-benar berharap. Tidak apa-apa. Jangan khawatir tentang hal itu karena kita belum benar-benar diinisialisasi jumlah yang sampai aku melangkahi garis ini dan nilai i telah diinisialisasi dengan nilai 1. Jadi untuk melihat bahwa itu sebenarnya kasus, mari kita melangkah lebih. Kita sekarang dapat melihat bahwa yang garis telah dieksekusi. Dan kita sekarang menyoroti baris printf ini. Dan kita sekarang dapat melihat bagaimana nilai-nilai kita i dan 3 telah berubah dari waktu ke waktu. Hal ini sangat berguna untuk dilakukan, pada kenyataannya, adalah langkah di atas garis berulang kali. Dan Anda dapat menemukan apa yang sebenarnya terjadi dalam untuk loop Anda dan apa yang terjadi pada variabel dalam yang untuk loop sebagai pelaksanaan program yang terjadi satu langkah pada satu waktu. Sekarang pada saat ini, saya melangkahi cukup bahwa saya sekarang saya di akhir program saya. Jika saya melangkah lebih dari itu, itu akan sebenarnya berhenti eksekusi seperti yang kita lihat di masa lalu. Biarkan saya memulai ini, lagi-lagi, sehingga bahwa saya bisa menunjukkan sesuatu yang lain keluar, demikian juga. Dalam hal ini, itu adalah sekarang meminta saya, sekali lagi, untuk nomor, yang Saya akan, lagi, masuk. Tapi kali ini, saya akan masuk dalam jumlah yang lebih besar sehingga untuk loop akan iterate kali. Dalam hal ini, saya akan untuk memasukkan nilai 11. Sekarang lagi karena saya akan mengatur break point pada baris 15, itu akan menyoroti garis. Kita dapat melihat bahwa kami nomor 11 adalah benar direpresentasikan dalam variabel lokal kami. Melangkahi itu, kita dapat sekarang menonton apa yang terjadi pada nilai kami i seperti yang kita lanjutkan dalam ini untuk loop. Ini akan bertambah setiap kali kita mencapai puncak yang untuk loop. Sekarang salah satu hal yang mungkin berguna untuk melakukan selama eksekusi dari program ini adalah bagi saya untuk benar-benar mengubah variabel tengah jalan untuk melihat apa yang terjadi pada program saya. Dalam hal ini, saya benar-benar bisa klik dua kali nilai. Perhatikan bahwa itu menjadi kolom teks. Sekarang saya bisa masuk berbeda menghargai sama sekali untuk melihat bagaimana program saya berperilaku ketika aku sudah berubah variabel itu. Sekarang dalam kasus ini, variabel i sekarang berisi nilai 10. Namun program ini masih berhenti di eksekusi. Ketika saya melangkah lebih, saya melihat bahwa nilai i, yang saya dimasukkan sebagai 10, tidak lebih besar dari nilai num, yang segera menyebabkan untuk loop untuk menghentikan mengeksekusi. Nah, itu bukan satu-satunya Alasan mengapa Anda akan ingin memodifikasi variabel di tempat. Anda mungkin benar-benar ingin untuk mencoba memodifikasinya sehingga Anda dapat melanjutkan eksekusi loop atau sehingga Anda dapat memodifikasi beberapa nilai sebelum mencapai beberapa set tertentu dari aritmatika bahwa Anda sedang melakukan. Jadi sekarang kita benar-benar mengubah nilai i sebagai program mengeksekusi, itu disebabkan untuk loop untuk berhenti prematur karena, tiba-tiba, saya terjadi lebih besar dari nilai num, artinya bahwa untuk loop tidak lagi diperlukan untuk dieksekusi. Selanjutnya, hal itu terjadi untuk menjadi hal ini kita mengubah nilai dari i ketika garis 17 disorot, yang merupakan titik waktu bahwa untuk pelaksanaan lingkaran sebenarnya sedang dievaluasi. Jika saya telah mengubah nilai i pada baris yang berbeda, mengatakan 19, kita akan melihat yang berbeda perilaku karena baris 19 akan telah dijalankan sebelum loop Kondisi itu dievaluasi ulang. Sekarang pada titik ini, saya, lagi, pada akhir program ini. Dan aku bisa membiarkan ini melanjutkan ke memungkinkan program saya untuk berhenti secara alami. Tapi ada beberapa hal yang penting untuk mengambil dari diskusi khusus ini. Anda perlu mengevaluasi asumsi Anda sendiri tentang bagaimana kode harus berperilaku. Setiap kali Anda berpikir bahwa beberapa bagian kode Anda tahu terjadi untuk bekerja, yang mungkin bendera merah untuk pergi kembali dan mengevaluasi, dan pastikan bahwa asumsi Anda bagaimana kode yang beroperasi sebenarnya benar bagaimana itu dinyatakan dalam kode sumber Anda. Tetapi bahkan lebih ke titik itu, ketika kita menggunakan debugger, Anda dapat menempatkan breakpoints di baris yang berbeda dari kode, yang akan menyebabkan debugger untuk jeda eksekusi pada masing-masing baris sehingga Anda dapat mengevaluasi memori atau bahkan mengubahnya di tempat. Dan lagi, ingat bahwa Anda dapat membuat beberapa breakpoints sehingga Anda juga dapat melanjutkan eksekusi, melewatkan lebih besar bagian dari kode, dan secara otomatis akan berhenti pada titik istirahat berikutnya. Ada sebenarnya yang lebih maju fitur dari debugger, juga. Tapi kita harus merujuk Anda untuk beberapa video berikutnya agar benar-benar menggoda terpisah bagaimana menggunakan fungsi-fungsi tertentu. Untuk saat ini, terima kasih sangat banyak untuk menonton. Dan keberuntungan debugging.