[? DAN ARMADARAS:] Hi, Saya [? Dan Armadaras?].
Hari ini, kita akan melihat kepada debugging.
Bukan sahaja kita akan bercakap tentang beberapa teknik,
tetapi juga kita akan melihat beberapa ciri-ciri yang terkandung
dalam IDE CS50 yang membolehkan anda dengan mudah debug program.
>> Hanya satu contoh sesuatu yang boleh pergi salah
dan ia sebenarnya sesuatu yang kita telah lihat sebelum ini.
Dalam kes ini, ini adalah satu program C yang menerima integer dari pengguna,
membahagikan oleh dua, dan menyediakan output kembali kepada pengguna.
Sekarang dari apa yang kita lihat sebelum ini dalam ceramah,
kita tahu bahawa ini benar-benar akan menyebabkan jenis tertentu masalah bahagian
apabila kita mempunyai nombor ganjil.
>> Secara khusus, kita hanya akan membuang apa-apa selepas titik perpuluhan.
Sekarang, kita tahu bahawa ini berlaku untuk menjadi kes itu.
Dan jika kita berjalan, kita boleh mengesahkan syak wasangka kita, pertama, dengan menyusun.
Dan kemudian, dengan menjalankan dan memasukkan nombor ganjil.
>> Ini bukan perkara baru.
Tetapi ini sebenarnya adalah contoh bug yang
boleh wujud dalam program yang lebih besar yang menjadi lebih sukar untuk mengesan.
Walaupun kita tahu apa isu adalah, pokok sebenar perkara itu
mungkin cuba untuk mengenalpasti khusus di mana kesilapan itu berlaku,
mengenal pasti apa masalah yang adalah, dan kemudian membetulkannya.
Jadi menyediakan ini sebagai contoh apa yang mungkin menjadi sesuatu yang
yang kita sudah tahu tetapi boleh dikebumikan dalam elemen-elemen lain kod.
>> Jadi membuka sumber lain ini fail kod sebagai contoh,
masalah bahagian ini kini sebahagian daripada program yang lebih besar.
Masih mungkin sedikit agak tersusun, dan kami
mungkin dapat dengan mudah mengenal pasti, terutamanya
kerana kita hanya membincangkan ini.
Tetapi kita boleh memikirkan bahawa ini masalah yang wujud di atas skala yang lebih besar.
>> Jika saya menyusun ini dan kini menjalankannya, masukkan nombor ganjil,
kita dapat melihat bahawa kita tidak mendapat tepat output yang kita mungkin telah dijangka.
Dalam kes ini, kita mungkin mengatakan bahawa kita
mahu mengira semua nombor dari satu sehingga ke nombor tertentu.
Dan kita boleh lihat kita yang mempunyai pelbagai isu-isu
di sini jika kita keluarkan, hanya, 0 dan 1 apabila kita memberi input 5.
>> Oleh itu, kita sudah tahu bahawa ada masalah di sini.
Tetapi kita tidak mengetahui dengan tepat di mana isu ini benar-benar wujud.
Sekarang salah satu cara yang kita boleh cuba untuk menetapkan ini
adalah sesuatu yang kami telah telah diperkenalkan kepada.
Kami hanya boleh menggunakannya pada skala yang lebih besar.
>> On line 14, kami mempunyai fungsi printf ini,
yang membolehkan kita untuk mencetak negeri pelbagai cebisan maklumat.
Dan ini adalah sesuatu yang anda perlu memanfaatkan dalam program anda
cuba untuk mengetahui dengan tepat apa yang berlaku dalam pelbagai baris kod.
Jadi, walaupun ini bukanlah output akhir yang kita benar-benar
mahu melahirkan daripada program ini, kita masih
mungkin mempunyai beberapa debug kenyataan di mana kita
boleh cuba untuk mencari tahu dengan tepat apa yang yang berlaku di dalam kod kami.
>> Jadi dalam kes ini, saya akan printf dengan tag debug.
Dalam kes ini, ini adalah hanya rentetan debug
bahawa saya up-meletakkan supaya ia menjadi sangat jelas dalam pengeluaran kod saya
apa itu yang saya mahu untuk menunjukkan.
Dan output di sini bilangan bahawa kita telah dikira.
>> Dalam kes ini, saya mungkin ingin tahu dengan tepat
apa yang berlaku sebelum dan selepas beberapa pengiraan tertentu.
Jadi saya mungkin menggunakan printf sebelum dan selepas itu baris kod.
Dalam kes ini, saya dapat walaupun membuat ia sedikit lebih jelas
dengan mengatakan debug sebelum dan debug selepas begitu
bahawa saya tidak mengelirukan diri saya dengan banyak baris yang kelihatan sama.
>> Sekarang jika kita susun semula ini dan menjalankan , masukkan nombor yang seperti lima lagi,
kita dapat melihat bahawa kita ada sekarang output sebelum dan selepas
dan mendapati bahawa kita tidak melakukan yang jelas bahagian atau jelas mempunyai bilangan
bahawa kita benar-benar mahu lakukan.
Sekarang dalam kes ini, ini adalah tidak benar-benar output yang jelas.
Ia tidak benar-benar keputusan yang jelas bahawa kita mahu keluar dari program ini tertentu.
>> Dan ini adalah, sekali lagi, sedikit tersusun.
Tetapi, mungkin, salah satu daripada perkara-perkara yang kita boleh lakukan jika penentuan itu berkata
yang kita mahu untuk membahagikan ini dengan 2 dan menambah 1-- jadi dalam erti kata lain,
kita bundarkan up-- kemudian kita akan mengetahui bahawa kita boleh
melakukan perkara yang tertentu, dalam kes ini.
Sekarang di sini kita tahu bahawa kita akan menjadi dapat menambah 1 kepada nombor separuh kami.
>> Mari kita susun semula ini dan mengesahkan bahawa ini
berkelakuan dengan cara yang kita mahu.
Kita dapat melihat bahawa sekarang sebelum mempunyai, kami mempunyai nombor 5.
Setelah, kami mempunyai nombor 3, yang mengikut spesifikasi kami,
adalah apa yang kita mahu lakukan.
Tetapi jika kita melihat output di sini, kita boleh
melihat bahawa kita mungkin mempunyai satu lagi bug sama sekali, yang
bahawa kita bermula kiraan kita dari 0.
>> Kini sekali lagi, ini adalah sesuatu yang telah kita lihat pada masa lalu
dan kita boleh menetapkan agak mudah.
Tetapi dalam kes ini, kita juga mempunyai manfaat
menggunakan pernyataan printf secara langsung di dalam satu gelung
untuk mengetahui dengan tepat di mana kesilapan yang telah berlaku.
Penyata Jadi printf adalah sangat berguna dalam membantu
anda menentukan di mana, tepat dalam kod sumber anda,
ralat tertentu berlaku.
>> Dan ia juga penting untuk menyedari itu, seperti yang kita menulis kod,
kita mungkin mempunyai andaian mengenai keadaan program.
Atau kita mungkin mempunyai andaian tentang apa yang sebahagian daripada program
sebenarnya betul atau tidak betul apabila kemudian seperti yang kita membina program yang
dan menjadikannya sebahagian daripada kompleks dan program yang lebih besar
yang kita sedar bahawa beberapa aspek daripada yang sebenarnya kereta.
>> Menggunakan printf benar-benar boleh membantu menyempitkan dan mengenal pasti
kawasan program yang tidak boleh akan berkelakuan dengan cara yang kita
jangkakan, berdasarkan andaian kami.
Tetapi ada alat-alat lain ada, juga,
yang membolehkan kita untuk cuba untuk angka di mana kesilapan yang berlaku
dan juga, khususnya, apa yang dilakukan sedang berlaku di dalam program ini.
>> Jadi menggunakan printf adalah sangat apabila berguna kita mahu
untuk mengenal pasti bidang-bidang tertentu satu program yang mempunyai beberapa bug.
Tetapi ia juga menjadi membosankan selepas beberapa ketika.
Dalam kes ini, ini adalah satu program yang agak mudah
dengan hanya satu atau dua pembolehubah.
Dan ia menjadi sangat mudah bagi kita untuk mencetak nilai pembolehubah-pembolehubah
dalam konteks program yang lebih besar.
>> Tetapi kita mungkin mempunyai yang berbeza program yang mempunyai banyak pembolehubah.
Dan ia mungkin tidak cukup begitu mudah untuk digunakan printf
cuba untuk menilai apa yang berlaku untuk setiap seorang daripada pembolehubah-pembolehubah
kerana program ini melaksanakan.
Ada satu program yang wujud dipanggil program penyahpepijat.
Dalam kes ini, salah satu yang kita akan digunakan adalah penyahpepijat GNU, atau GDB,
yang membolehkan kita untuk memeriksa dalaman cara kerja program yang dalam yang lebih
cara terperinci.
>> Kami benar-benar boleh melaksanakan GDB daripada baris arahan
di sini dengan hanya menaip GDB dan arahan yang kita mahu untuk debug.
Dalam kes ini, mengira.
Sekarang dalam kes ini, kita boleh melihat bahawa ia membawa kita kepada gesaan yang mengatakan GDB.
Dan kita boleh sebenarnya melaksanakan arahan untuk GDB
untuk benar-benar mula pelaksanaan program, berhenti di tempat-tempat tertentu,
menilai pembolehubah dan memeriksa pembolehubah yang
wujud di negeri program pada saat itu,
dan sebagainya dan sebagainya.
Ia menyediakan banyak kuasa kepada kami.
>> Tetapi ia hanya kebetulan yang IDE CS50 juga
menyediakan GUI atau pengguna antara muka untuk GDB yang
membolehkan kita untuk melakukan ini tanpa perlu antara muka baris arahan jua
atau di semua walaupun.
Cara yang saya boleh mengakses yang adalah dengan menggunakan butang debug
di bahagian paling atas IDE CS50.
Sekarang pada masa lalu, apa yang kita ada dilihat ialah kita menggunakan arahan
talian untuk menyusun dan kemudian jalankan program.
>> Butang debug tidak kedua-dua langkah-langkah.
Tetapi ia juga akan mengangkut tab penyahpepijat jauh ke kanan
yang membolehkan kita untuk memeriksa pelbagai hartanah program
kerana ia melaksanakan.
Jika saya klik debug pada yang demikian kes, ia akan membawa
tab baru dalam konsol tingkap di bahagian paling bawah.
>> Dan anda boleh melihat bahawa tab ini mempunyai beberapa maklumat di bahagian paling atas.
Dan kita sebahagian besarnya boleh mengabaikan ini.
Tetapi salah satu perkara yang bahawa kita mahu melihat
adalah bahawa output perkara yang sama yang kita
akan dapat jika kita cuba melarikan buat pada program C dalam tetingkap terminal.
>> Di sini, kita dapat melihat ia berjalan dilafaz, dan ia mempunyai pelbagai bendera,
dan ia menyusun fail count.c kami, yang merupakan tab yang dipilih pada masa yang
yang saya memukul debug.
Jadi ini adalah sangat berguna kerana kini menggunakan butang debug ini,
kita pada masa yang sama boleh menyusun dan kemudian melaksanakan program yang kita benar-benar
mahu menjalankan.
>> Salah satu bendera yang penting, dalam kes ini,
kami sebenarnya telah menggunakan untuk masa yang paling lama
tetapi juga hanya melakukan tangan beberapa melambai [didengar], yang
adalah salah satu ini di sini.
Dalam dilafaz, ia berkata -ggdb3.
Dalam kes ini, apa yang kita memberitahu dilafaz, pengkompil kami,
ialah kami mahu untuk menyusun program kami.
Tetapi juga menyediakan apakah dipanggil maklumat simbol
supaya pengkompil sebenarnya mempunyai akses kepada banyak maklumat asas
yang terkandung dalam program ini.
>> Lebih khusus lagi, bilangan fungsi yang saya ada,
nama-nama mereka fungsi, pembolehubah, jenis-jenis
bahawa orang-orang pembolehubah, dan pelbagai perkara-perkara lain yang membantu penyahpepijat
melaksanakan operasinya.
Sekarang ada sesuatu yang lain yang penting untuk menyebut
apabila kita berbincang berjalan program dengan cara ini.
>> Perhatikan bahawa ia sebenarnya mempunyai dibesarkan tab baru dalam konsol kami
sepanjang bahagian bawah.
Kita tidak lagi perlu berinteraksi terus dengan tetingkap terminal.
Tetapi tab baru ini adalah sebenarnya tetingkap terminal.
Ia hanya khusus untuk berjalan program yang telah kami buat.
>> Perhatikan bahawa di bahagian bawah, dalam kombinasi dengan beberapa output
oleh dilafaz penyusun dan GDB, yang kami sebahagian besarnya boleh mengabaikan,
ia sebenarnya menunjukkan output program kami di bahagian paling bawah.
Kini ia adalah penting untuk menyedari bahawa tingkap yang satu ini sebenarnya
akan menunjukkan kepada anda output dari program anda
tetapi juga boleh menerima input bagi program tersebut, juga.
>> Jadi notis yang mengatakan sila masukkan nombor,
yang merupakan output yang sama bahawa kita mempunyai mempunyai dalam tetingkap terminal sebelum ini.
Tetapi ia kini ditunjukkan dalam tab baru ini.
Saya boleh memasukkan nombor.
Dan ia akan benar-benar fungsi seperti yang kita harapkan
menunjukkan kepada kita debug kami, output, output yang mungkin kereta,
seperti yang kita lihat sebelum ini.
Dan pada yang bawah, ia sebenarnya mempunyai beberapa output tambahan
daripada KDNK hanya mengatakan bahawa program ini telah selesai.
>> Sekarang seperti yang anda lihat dalam ini jangka tertentu melalui,
ia tidak begitu berguna kerana walaupun
walaupun kita mempunyai menu penyahpepijat datang sehingga, ini adalah program berjalan masih.
Tanpa titik yang berlaku sebenarnya berhenti seketika pelaksanaan untuk kita
dapat memeriksa semua pembolehubah yang terkandung dalam.
Ada sesuatu yang lain yang perlu kita lakukan untuk
untuk mendapatkan GDB untuk menyedari bahawa kita mahu untuk berhenti seketika pelaksanaan program
dan bukan hanya membenarkan ia untuk meneruskan biasanya kita akan dalam apa-apa hal lain.
>> Dalam usaha untuk menghentikan sementara pelaksanaan, di beberapa laluan tertentu,
kita perlu membuat apa yang dipanggil titik rehat.
Dan titik rehat adalah sangat mudah dibuat dalam ini CS50 IDE dengan mengambil tetikus anda
dan klik terus ke kiri beberapa nombor talian tertentu.
Apabila saya berbuat demikian, satu titik merah muncul, yang menunjukkan
bahawa garis yang kini merupakan titik pulang.
>> Dan masa depan yang saya jalankan GDB, ia akan menghentikan pelaksanaan pada yang titik pulang
apabila ia mencapai yang baris kod.
Sekarang ini adalah penting perkara yang perlu sedar
bahawa ia tidak semestinya kes setiap baris kod
sebenarnya boleh akses.
Jika saya membuat satu majlis di sini, untuk f-- tidak sah example--
dan hanya melakukan garis cetak sini-- hello world-- jika saya tidak pernah memanggil fungsi ini,
ia akan menjadi kes itu, jika saya menetapkan titik rehat di sini,
majlis itu tidak akan dipanggil.
Oleh itu, ini titik pulang tertentu
akan pernah benar-benar berhenti seketika pelaksanaan program ini.
>> Jadi mari kita mengatakan bahawa saya betul mewujudkan titik rehat pada beberapa baris kod
yang benar-benar akan dilaksanakan.
Sekarang dalam kes ini, ini adalah baris pertama dalam fungsi utama.
Oleh itu, ia pasti akan menjadi kes itu itu, sebaik sahaja saya mula pelaksanaan,
baris pertama akan dicapai.
GDB akan berhenti seketika pelaksanaan.
Dan kemudian, saya akan dapat berinteraksi dengan penyahpepijat.
>> Anda boleh menetapkan banyak baris sebagai titik putus, jika anda mahu.
Kami juga boleh membuat garis sehingga sini dalam segmen ini kod
yang tidak dapat dicapai.
Dan kita juga boleh menetapkan satu lagi di bawah.
Alasan bahawa kita akan mahu melakukan ini kita akan
pergi ke lebih sedikit terperinci dalam hanya seketika.
Jadi buat masa ini, biarlah saya hanya melumpuhkan ini mata break tambahan
supaya kita boleh melihat apa yang berlaku apabila saya mempunyai satu rehat tunggal
titik dalam program saya.
Aku telah menempatkan sebahagian perubahan kepada program ini.
Jadi saya perlu untuk menyimpannya.
Saya akan klik debug supaya saya boleh memulakan penyusunan dan kemudian
pelaksanaan penyahpepijat.
>> Kita akan lihat bahawa, selepas detik-detik, yang garis yang kita dipilih sebagai rehat
titik diserlahkan dengan warna kuning.
Kita juga boleh melihat bahawa dalam kanan atas dalam panel debug
ikon jeda telah bertukar menjadi ikon bermain sedikit.
Ini bermakna bahawa kita mempunyai jeda pelaksanaan, dalam kes ini.
Dan memukul butang Main akan membolehkan kita untuk meneruskan pelaksanaan
pada titik tertentu.
>> Perhatikan bahawa ada beberapa yang lain butang yang ada dalam panel debug ini,
juga.
Melangkah, yang membolehkan saya melaksanakan garis bahawa salah satu kod
dan langkah ke garis kepada yang seterusnya, yang, dalam kes ini,
bermakna printf kenyataan dilaksanakan.
Dan ia kemudiannya akan berhenti seketika pelaksanaan atas line 13, seperti demikian.
>> Dan juga ada langkah ke dalam fungsi, yang
berguna jika saya telah mencipta lain fungsi di tempat lain dalam kod sumber.
Dan saya mahu melangkah ke fungsi-fungsi dan bukan
melaksanakan fungsi itu secara keseluruhannya.
Tetapi kita akan kelihatan lebih pada langkah ke dalam fungsi dalam hanya seketika.
Sekarang perhatikan beberapa perkara lain yang benar-benar wujud dalam panel debug ini.
>> Kami mempunyai panel ini dipanggil memanggil timbunan, yang menunjukkan kepada kita
di mana sebenarnya kita berada.
Dalam kes ini, kita berada di dalam fungsi utama.
Skrip kami dipanggil count.c.
Dan kita berada di line 13, kolum satu, yang
adalah tepat apa kawasan yang diserlahkan kod sumber itu menunjukkan, juga.
>> Sekarang perhatikan bahawa ini juga menunjukkan di bawah seksyen pembolehubah tempatan
semua pembolehubah yang wujud dalam fungsi ini.
Adalah penting untuk ambil perhatian bahawa semua pembolehubah
akan muncul dalam pembolehubah tempatan ini seksyen dalam fungsi,
walaupun sebelum mereka ditetapkan.
Kita boleh lihat di sini yang kita ada pembolehubah dipanggil num, mempunyai nilai lalai 0,
dan ia adalah dari jenis int.
>> Sekarang sebelum kita benar-benar memulakan semua pembolehubah ini,
kita tidak semestinya dijamin melihat nilai 0.
Dan bergantung kepada hukuman lain yang telah dilakukan
dan keadaan memori anda apabila anda sebenarnya menjalankan program ini,
anda mungkin mendapati bahawa anda tidak melihat nilai-nilai 0
dan, sebaliknya, beberapa nombor gila lain.
>> Tetapi jangan bimbang tentang perkara itu.
Ia tidak akan menjadi relevan sehingga anda sebenarnya memulakan nilai.
Sekarang dalam kes ini, kita dapat melihat bahawa Aku telah melaksanakan beberapa output.
Dan saya, sekarang, dihentikan sementara pelaksanaan.
Tetapi dalam kes ini, apa yang Saya benar-benar mahu lakukan
adalah kini melangkah lebih garisan ini kod supaya saya boleh sebenarnya
query pengguna untuk int bahawa kita hendak gunakan dalam program kami.
>> Sekarang dalam kes ini, apabila Saya memukul melangkah, notis
bahawa Jeda atau sebaliknya Sambung semula butang telah berubah ke butang Jeda ini
kerana kod ini sebenarnya melaksanakan.
Apa yang berlaku sekarang adalah bahawa ia adalah
menunggu kita untuk input beberapa maklumat seperti yang kita boleh lihat dengan teks keluaran kami
di bahagian paling bawah.
>> Jadi sekarang, ini adalah sebenarnya tidak berhenti sebentar,
walaupun, jenis, nampaknya menjadi kerana tiada apa yang berlaku.
Tetapi ia hanya kebetulan bahawa dalam kes tertentu saya di talian 13,
Saya menunggu input pengguna.
Dan sebagainya GDB tidak dapat memeriksa program kerana ia berjalan.
>> Sekarang masa yang akan datang bahawa saya memasukkan beberapa input-- jadi saya akan masukkan yang nombor 5,
seperti yang kita lihat dalam past-- melanda Return, dan kami
perhatian bahawa, serta-merta, menjeda GDB dan, sekali lagi, menonjolkan baris berikutnya.
Tetapi notis bahawa sekarang, sebagai hasil kami memasukkan nilai,
kami telah mengemas kini nilai itu dalam pembolehubah tempatan kita, yang
adalah sangat berguna untuk mengetahui dengan tepat apa nombor yang berada di dalam ingatan.
>> Sekarang saya boleh membenarkan program ini akan berterusan bermain sehingga akhir pelaksanaannya
dengan memukul Resume.
Kita dapat melihat bahawa dengan cepat tidak selesai program pelaksana
dengan keluaran yang sama bahawa kita sebelum ini, penyahpepijat ditutup,
dan kini program ini telah berhenti sepenuhnya.
>> Saya menunjukkan bahawa hanya untuk maksud melihat apa
yang berlaku apabila kita benar-benar melanda Resume.
Tetapi kita benar-benar akan mahu kembali ke dalam program ini
supaya kita boleh cuba untuk debug dengan tepat apa yang berlaku.
Sekarang saya menggunakan penyahpepijat, saya boleh tidak perlu kenyataan-kenyataan ini debug printf.
>> Jadi saya boleh mengeluarkan mereka seperti yang saya akan lakukan kini hanya untuk kembali ke kod kami lebih mudah
bahawa kita mempunyai masa yang lalu.
Sekarang apabila saya menyelamatkan program dan melaksanakannya,
ia akan, sekali lagi, pergi ke awal yang memecahkan ketika itu saya di talian 11.
Dan saya akan dapat untuk memeriksa pembolehubah saya kerana saya mahu lakukan.
>> Ia hanya kebetulan bahawa ini sebahagian tidak begitu menarik,
Dan saya tahu bahawa saya akan mencetak kenyataan ini.
Sila masukkan nombor.
Dan kemudian, saya tahu bahawa saya akan untuk meminta pengguna untuk integer itu.
Jadi mungkin, saya benar-benar mahu bergerak saya memecahkan mata yang lebih jauh ke bawah.
>> Anda boleh mengeluarkan mata break dengan mengklik, sekali lagi, secara langsung
sebelah kiri yang nombor talian.
Bahawa titik merah akan hilang, yang menunjukkan bahawa titik pulang sekarang sudah hilang.
Sekarang dalam kes ini, pelaksanaan telah dihentikan sementara.
Dan oleh itu tidak benar-benar akan menyambung semula dalam hal tersebut.
Tetapi saya boleh menetapkan rehat menunjukkan sedikit kemudian.
>> Dan apabila saya sekarang meneruskan saya kod, ia akan menyambung semula dan memberitahu
titik yang titik pulang.
Sekali lagi, saya memukul Resume.
Tidak kelihatan seperti apa-apa yang berlaku.
Tetapi itu kerana saya Kod sedang menunggu untuk input.
Saya akan memasukkan nombor 5, tekan Enter, dan sekarang titik pulang seterusnya akan melanda.
>> Sekarang dalam kes ini, ini adalah baris kod
itu, sebelum ini, kita tahu kebetulan berada kereta.
Jadi mari kita menilai apa yang berlaku pada ini masa tertentu.
Apabila talian yang diserlahkan, ini talian masih belum dilaksanakan.
Jadi dalam kes ini, kita dapat melihat bahawa saya mempunyai nombor, yang
Saya mempunyai integer dipanggil num yang mempunyai nilai 5.
Dan saya akan membuat persembahan beberapa matematik pada nombor itu.
>> Jika saya melangkah lebih daripada itu, kita boleh melihat bahawa nilai untuk num
telah berubah mengikut aritmetik yang kita telah benar-benar dilakukan.
Dan kini bahawa kita adalah di dalam ini untuk gelung
atau sekarang bahawa untuk gelung sendiri diserlahkan,
kita melihat bahawa kita mempunyai baru pembolehubah dipanggil i yang
akan digunakan dalam yang untuk gelung.
>> Sekarang ingat sebelum saya yang menyebut bahawa kadang-kadang anda berada
akan melihat beberapa jenis gila nombor sebagai lalai sebelum nombor yang
atau pembolehubah yang sebenarnya dimulakan.
Kita dapat melihat bahawa dengan tepat sini dalam pembolehubah ini
dipanggil i, yang tidak mempunyai belum dimulakan
pada masa menonjolkan.
Tetapi kita boleh melihat bahawa ia mempunyai beberapa nombor bahawa kita tidak akan benar-benar harapkan.
>> Tak apa.
Jangan bimbang tentang hal itu kerana kita tidak benar-benar
dimulakan jumlah itu sehingga saya melangkah lebih garisan ini dan nilai
i telah dimulakan dengan nilai 1.
Jadi untuk melihat bahawa yang sebenarnya kes itu, mari kita melangkah.
Kini kita boleh melihat bahawa yang talian telah dilaksanakan.
Dan kami kini menonjolkan ini selaras printf.
>> Dan kini kita dapat melihat bagaimana nilai-nilai kita i dan 3 telah berubah dari masa ke masa.
Ini adalah sangat berguna untuk dilakukan, sebenarnya, adalah untuk melangkah lebih garisan berulang kali.
Dan anda boleh mencari apa yang sebenarnya yang berlaku di dalam gelung anda
dan apa yang berlaku kepada pembolehubah dalam itu untuk gelung
kerana itu pelaksanaan program berlaku satu langkah pada satu masa.
>> Sekarang pada ketika ini, saya melangkah lebih hanya cukup
bahawa saya kini adalah pada akhir program saya.
Jika saya melangkah lebih daripada itu, ia akan sebenarnya berhenti pelaksanaan
seperti yang kita lihat pada masa lalu.
Biar saya mulakan semula ini, sekali lagi, supaya bahawa saya boleh menunjukkan sesuatu yang lain keluar,
juga.
>> Dalam kes ini, ia adalah kini meminta saya, sekali lagi,
untuk beberapa, yang Saya akan, sekali lagi, masuk.
Tetapi kali ini, saya akan masukkan ke dalam jumlah yang lebih besar supaya untuk gelung
akan melelar kali lagi.
Dalam kes ini, saya akan memasukkan nilai 11.
>> Kini sekali lagi kerana saya menetapkan titik rehat di garisan 15,
ia akan menonjolkan baris itu.
Kita dapat melihat bahawa kami nombor 11 adalah betul
diwakili dalam pembolehubah tempatan.
Melangkah lebih daripada itu, kita boleh sekarang menonton apa yang berlaku kepada nilai kami i
seperti yang kita meneruskan dalam ini untuk gelung.
Ia mendapat incremented setiap kali kita sampai ke atas itu untuk gelung.
>> Sekarang salah satu perkara-perkara yang mungkin berguna untuk dilakukan sepanjang pelaksanaan
program ini adalah bagi saya untuk benar-benar menukar pertengahan pembolehubah untuk melihat
apa yang berlaku kepada program saya.
Dalam kes ini, saya boleh sebenarnya klik dua kali nilai.
Perhatikan bahawa ia menjadi medan teks.
>> Sekarang saya boleh memasukkan berbeza nilai sama sekali
untuk melihat bagaimana program saya berkelakuan apabila saya telah mengubah pembolehubah itu.
Sekarang dalam kes ini, pembolehubah i kini mengandungi nilai 10.
Tetapi program ini masih berhenti dalam pelaksanaan.
Apabila saya melangkah, saya melihat bahawa nilai i, yang saya dimasukkan sebagai 10,
tidak lebih besar daripada nilai num, yang sebaik menyebabkan untuk gelung
untuk menghentikan melaksanakan.
>> Sekarang bukan satu-satunya sebab mengapa anda akan
mahu mengubah pembolehubah di tempat.
Anda sebenarnya mungkin mahu cuba untuk mengubahsuainya supaya
anda boleh terus pelaksanaan gelung
atau supaya anda boleh mengubah suai beberapa nilai sebelum ia
mencapai beberapa set khusus aritmetik bahawa anda adalah kira-kira untuk melaksanakan.
>> Jadi sekarang bahawa kita benar-benar mengubah nilai i sebagai program itu melaksanakan,
ia menyebabkan untuk gelung untuk berhenti terlalu awal kerana, tiba-tiba, i
kebetulan berada lebih besar daripada nilai daripada num, bermakna bahawa untuk gelung
tidak lagi perlu dilaksanakan.
Selain itu, ia berlaku untuk menjadi yang kes kita berubah nilai i
apabila talian 17 telah diketengahkan, yang merupakan titik dalam masa
bahawa bagi pelaksanaan gelung sebenarnya sedang dinilai.
>> Jika saya telah berubah nilai i pada baris yang berbeza, mengatakan 19,
kita akan dilihat berbeza tingkah laku kerana garis 19 akan
telah dilaksanakan di hadapan gelung keadaan telah dinilai semula.
Sekarang pada ketika ini, saya, sekali lagi, pada akhir program ini.
Dan saya boleh membenarkan ini untuk meneruskan ke membolehkan program saya untuk berhenti secara semula jadi.
Tetapi ada beberapa perkara yang penting untuk mengambil
daripada perbincangan khusus ini.
Anda perlu menilai andaian anda sendiri
tentang bagaimana kod harus berkelakuan.
Jika anda berfikir bahawa beberapa keping kod anda tahu berlaku untuk bekerja,
yang mungkin menjadi bendera merah untuk pergi belakang dan menilai, dan pastikan
bahawa andaian anda bagaimana kod yang beroperasi
sebenarnya benar kepada bagaimana ia dinyatakan dalam kod sumber anda.
>> Tetapi yang lebih penting lagi ialah, apabila kita menggunakan penyahpepijat,
anda boleh meletakkan titik putus di garisan yang berbeza kod,
yang akan menyebabkan penyahpepijat untuk berhenti seketika pelaksanaan pada setiap orang-orang garis
supaya anda boleh menilai ingatan atau menukar di tempat.
Dan sekali lagi, ingat bahawa anda boleh membuat beberapa titik putus supaya anda
juga boleh meneruskan pelaksanaan, skip pada sebahagian besar kod,
dan ia secara automatik akan berhenti seketika pada ketika rehat seterusnya.
>> Ada sebenarnya yang lebih maju ciri-ciri penyahpepijat, juga.
Tetapi kita perlu merujuk anda untuk beberapa video yang berikutnya
untuk benar-benar mengusik selain bagaimana untuk menggunakan fungsi-fungsi tertentu.
Buat masa ini, terima kasih banyak untuk menonton.
Dan debugging nasib baik.