Halo dan selamat datang kembali.
Dalam kuliah ini, saya akan memberikan demonstrasi bagaimana Anda dapat menggunakan debugger.
Jadi saya ingin menjalankan antarmuka pengguna grafis, menunjukkan kepada Anda bagaimana Anda dapat memulai program dalam mode debugging,
bagaimana Anda dapat mengatur breakpoints, bagaimana Anda dapat melihat call stack dan bagaimana Anda dapat melihat variabel yang berbeda
menggunakan jendela watch.
Hanya sebuah program sederhana yang menentukan rata-rata.
Saya akan menggunakan ini sebagai demonstrasi saya.
Yang dilakukannya adalah membaca dalam tiga bilangan bulat dan menyimpannya, lalu menghitung rata-ratanya.
Sekarang, satu hal yang ingin saya sebutkan sebelum kita benar-benar menggunakan debugger, Anda harus memastikan
bahwa konfigurasi Anda sudah diatur dengan benar.
Dan saya telah membicarakan hal ini dalam video sebelumnya, pada dasarnya mengkonfigurasi lampu kode untuk menggunakan debugger.
Tetapi hanya untuk menyegarkan ingatan Anda, Anda dapat memilih proyek di sini, Anda dapat mengklik kanan dan pergi
ke pengaturan.
Anda ingin memastikan lagi, tergantung pada platform apa yang Anda gunakan, Anda ingin memastikan bahwa
pengaturan debugger di sini di sebelah kiri memiliki jalur yang tepat ke GDB.
Sekarang jika Anda menggunakan Windows, mungkin Anda harus menggunakan GDB X dari Cygwin atau mungkin menggunakan MinGW w64, apa pun yang
Anda gunakan.
Jika Anda menggunakan Unix dan Linux, jalur ini bahkan tidak perlu diatur.
Hal penting lainnya adalah dalam opsi kompiler, Anda harus memastikan bahwa Anda mengkompilasi
untuk debugging sehingga Dash G dwarf ada di dash o untuk pengoptimalan.
Sekali lagi, di Windows, hal-hal tersebut harus diatur untuk mendapatkan informasi debugging bersama dengan
eksekusi Anda.
Anda juga harus memastikan bahwa Anda membangun untuk mode debug.
Jadi, Anda harus memastikan bahwa debug dipilih dan bukan release.
Setelah Anda mengkonfigurasi semua hal tersebut dengan benar, Anda seharusnya dapat menggunakan debugger dan
code light.
Jika Anda memiliki masalah dengan itu, silakan kembali ke video saya untuk mengkonfigurasi pada platform Anda.
Debugger dan Lampu Kode.
Konsep yang paling penting mengenai debugger adalah gagasan tentang breakpoint.
Jadi, breakpoint adalah sesuatu yang dapat Anda atur dalam program Anda di mana ia akan menghentikan eksekusi
kode Anda.
Pada dasarnya Anda dapat mengatakan, Hei, saya ingin berhenti di baris ini dan program
Anda ketika Anda menjalankan debugger akan berhenti di baris tersebut.
Hal ini memungkinkan Anda untuk melangkah melalui kode Anda satu per satu untuk mencoba mendiagnosis dan memperbaiki masalah yang mungkin
terjadi.
Biasanya, ketika Anda menjalankan program, jika Anda mencoba menjalankannya di debugger dan Anda tidak memiliki set breakpoint,
tidak akan ada yang terjadi.
Jadi biasanya ketika Anda membangun, Anda tahu, Anda bisa pergi dan membangun proyek Anda
seperti proyek lainnya, pergi membangun, pergi membangun proyek.
Ketika Anda membuatnya dan menjalankannya dalam mode debug, Anda harus pergi ke opsi menu debugger dan Anda harus
pergi untuk memulai, lanjutkan debugger.
Dan ketika Anda mengeksekusi itu lagi, jika Anda memiliki breakpoint yang ditetapkan, itu akan mengenainya.
Jika Anda tidak memiliki breakpoint yang ditetapkan, maka akan berjalan begitu saja.
Jadi, jika kita mencoba menjalankan program ini dalam mode debug, program ini akan muncul dan meminta enter karena berhenti
tepat di angka-angka dan kemudian Anda cukup menekan beberapa angka dan program ini akan menutup.
Bahkan tidak benar-benar mencetak informasi, bukan?
Jadi, sangat penting jika Anda ingin menggunakan debugger, Anda harus memiliki setidaknya satu set breakpoint.
Cara termudah untuk mengatur breakpoint adalah dengan mengklik di dalam margin di dekat nomor baris pada nomor baris yang ingin
Anda atur breakpoint-nya.
Dan sekali lagi, breakpoint akan menghentikan eksekusi pada nomor baris tersebut.
Jadi jika kita menetapkan breakpoint tepat di dekat fungsi printf pada baris ke sepuluh, kita tinggal klik dua kali, Anda akan melihat
sebuah lingkaran merah ditempatkan.
Ini memberi tahu debugger, hei, berhenti di baris sepuluh.
Jadi sekali lagi, cara kita memulai debugger adalah dengan membuka debugger dan mengatakan, mulai, lanjutkan, bukan?
Segala sesuatu yang lain tampak abu-abu, bukan?
Jadi, mari kita mulai debugger hanya untuk mencapai breakpoint itu.
Jadi, mari kita mulai melanjutkan debugger dan kita akan mengatakan build dan debug dan Anda akan
melihat bahwa program berhenti di baris sepuluh.
Anda melihat panah hijau itu, Anda juga melihat bahwa panel debugger muncul.
Jadi, jika Anda pergi untuk melihat, Anda sebenarnya dapat membuka panel debugger secara manual atau
secara otomatis muncul ketika Anda masuk ke mode debug dan panel debugger memiliki banyak tab berbeda untuk informasi yang dapat dilihat.
Anda juga dapat melewatinya melalui debugger yang Anda buka di jendela GDB, Anda dapat melihat semua yang
dicentang.
Ada banyak jendela debugger yang dapat Anda lihat.
Jadi, jam tangan lokal biasanya berkaitan dengan variabel lokal Anda.
Anda dapat meletakkan jam tangan pada variabel sehingga jika variabel berubah, jam tangan tersebut akan muncul.
Output dapat digunakan untuk berbagai opsi debugging dan utas output.
Anda sebenarnya dapat melihat thread yang menjalankan program Anda.
Konsep yang lebih canggih Callstack adalah fokus kami.
Pada dasarnya kami melihat tumpukan panggilan dan penduduk setempat.
Itu adalah dua yang paling penting yang membantu Anda dengan debugging, lalu memori, dan juga breakpoint.
Anda dapat melihat di mana breakpoint ditetapkan.
Begitu banyak pilihan yang berbeda.
Saat ini kami berhenti di jalur sepuluh.
Kita dapat melihat tumpukan panggilan.
Tumpukan panggilan menunjukkan kepada kita bahwa fungsi utama dipanggil.
Jika kita melihat penduduk setempat, ini menunjukkan kepada kita tiga variabel nol, satu, dan nol.
Kami belum memasukkan informasi apa pun di dalamnya yang diinisialisasi nol satu dan nol.
Jam tangan ini sebenarnya bisa Anda tambahkan.
Tambahkan dengan menekan tanda plus untuk menambahkan jam tangan pada variabel tertentu.
Dan hal penting lainnya yang perlu diperhatikan adalah ketika Anda menjalankan dalam mode debug, Anda sekarang
memiliki toolbar untuk debugger, bukan?
Tombol putar akan terus berlanjut.
Jadi itu akan terjadi.
Jika saya menekan tombol play, maka akan langsung keluar dari program, bukan?
Kamera ini akan mulai berjalan.
Program ini sebenarnya akan meminta masukan.
Jadi saya menekan tombol play.
Saya kembali ke aplikasi konsol dan tertulis Enter.
Jadi saya mencapai tiga nomor saya dalam program yang dijalankan.
Berarti, Anda masih belum melihat fungsi cetak.
Jendela itu hilang begitu saja.
Jadi sekali lagi, kita jalankan dalam mode debug dan pergi ke breakpoint lagi, panel debugger muncul, menghentikan
baris sepuluh.
Sekarang toolbar sangat penting karena ini adalah bagaimana Anda dapat benar-benar melangkah melalui kode Anda
dan Anda benar-benar dapat menggunakan toolbar atau Anda dapat pergi ke debugger dan Anda dapat melihat semua opsi di sini.
Jadi, Anda dapat mengatakan langkah ke dalam langkah ke dalam instruksi berikutnya, instruksi berikutnya, langkah keluar, langkah ke dalam akan masuk
ke dalam suatu fungsi.
Jika sebuah fungsi dipanggil pada baris tersebut, langkah ke dalam instruksi lebih mengarah ke tipe bahasa
assembly.
Selanjutnya, kita akan melompati baris kode tersebut.
Dan instruksi leher adalah hal yang sama.
Step out, mencoba melompat keluar dari sebuah fungsi jika Anda sudah berada di dalamnya dan melompat ke garis wortel.
Sebenarnya, menurut saya, ini mengarah ke kursor.
Sama halnya dengan lari ke garis wortel.
Anda dapat menghidupkan dan mematikan breakpoint, menonaktifkan semuanya, semua hal itu sehingga Anda dapat mengaksesnya
melalui menu.
Atau lagi, bilah alat.
Biasanya saya menggunakan toolbar karena sudah ada di atas.
Dan kemudian jika Anda melihat jendela yang berbeda lagi, penduduk setempat menyebutnya stack dan breakpoint.
Benar-benar yang penting.
Ini menunjukkan bahwa saya memiliki breakpoint pada baris sepuluh.
Dan kemudian saya pikir, orang hanya tinggal menggerakkan kursor.
Jadi sekarang saya berhenti di sini di cetak F masuk pada baris sepuluh.
Saya dapat melanjutkan ke instruksi berikutnya dan ini akan menuju ke pemindaian baris 11.
F sebenarnya adalah fungsi pemblokiran yang meminta masukan.
Jadi, jika saya mencoba untuk melanjutkan ke bagian berikutnya, sebenarnya hanya semacam jeda.
Anda mungkin harus menekan tombol berikutnya beberapa kali.
Apa yang biasanya saya lakukan ketika program meminta masukan dan saya menginginkannya, sudah diblokir, sudah dihentikan dan
saya ingin beralih ke yang berikutnya.
Saya hanya akan meletakkan break point pada baris berikutnya dan menekan tombol play.
Jadi sekarang saya menekan tombol play dan tidak ada yang terjadi karena menunggu input.
Dalam program, tertulis Enter.
Jadi di sini saya bisa menekan lima, enam, tujuh, tekan tombol enter dan sekarang mencapai break point.
Jadi, sekarang kita berada pada tombol cetak, di mana kita bisa langsung menggunakan fungsi cetak.
Dan sebenarnya, pertama-tama, ini akan melompat ke fungsi rata-rata.
Jadi, jika kita mengatakan langkah ke dalam, kita akan melihat bahwa kita pergi ke fungsi rata-rata.
Dan apa yang akan Anda perhatikan adalah jika Anda melihat variabel Anda, Anda dapat melihat variabel Anda berubah.
Jadi, jika Anda melanjutkan ke baris berikutnya, Anda pergi ke baris berikutnya di 27, lalu 28, dan kemudian terus memukul.
Berikutnya, Anda benar-benar melompat keluar dan Anda benar-benar berada di akhir fungsi.
Jadi, Anda dapat menekan tombol play dan Anda dapat melihat bahwa program Anda sekarang telah selesai dan jendela menghilang.
Tetapi Anda bisa melihat variabel Anda, Anda bisa melihat yang lainnya.
Jadi, sekali lagi, Anda juga dapat menempatkan titik henti di dalam fungsi cetak di sini.
Dan jika kita menjalankannya, kita dapat melihat lagi bahwa fungsi cetak akan menghentikan eksekusi, bukan rata-rata.
Dan kemudian kita bisa melihat apa yang terjadi di dalam aplikasi, jika kita melangkah dan
membuka aplikasi, Anda bisa melihat bahwa informasi telah dicetak.
Benar, kan?
Ketika Anda melanjutkan, ketika Anda menjalankan hingga akhir, Anda akan mendapatkan pernyataan kembali dan program akan keluar.
Jadi, sangat penting jika Anda ingin melihat output dari program ini, Anda harus menempatkan
break point sebelum kembali dan tidak perlu melanjutkannya.
Anda dapat menghentikan debugger dengan menekan persegi panjang merah, menjeda debugger dengan menekan
dua bilah paralel, memulai ulang debugger dengan opsi tersebut dan callstack.
Sekali lagi, akan lebih mudah dilihat di sini jika Anda masuk ke dalam sebuah fungsi dan Anda menjalankan debugger, kami akan menjalankan debugger
lagi.
Katakanlah debugger, mulai, lanjutkan.
Dan ketika kita mencapai titik jeda setelah memasukkan informasi di dalam sebuah fungsi, Anda akan melihat car stack
memiliki main dan print seperti yang kita tunjukkan sebelumnya.
Jadi Anda dapat melihat fungsi terakhir yang dipanggil sekarang dengan program yang memiliki banyak fungsi dan seterusnya,
tumpukan panggilan bisa menjadi jauh lebih besar dari ini.
Satu-satunya hal lain yang mungkin penting adalah breakpoint.
Jika Anda ingin melihat breakpoint yang Anda tetapkan, ini akan menunjukkan semua breakpoint dan seluruh program Anda
di mana mereka berada.
Tetapi Anda harus bermain-main dengan ini, membiasakan diri dengannya, merasa nyaman dengannya, dan menggunakannya cukup sering
untuk masalah yang tidak dapat Anda pecahkan dengan teknik atau program debugging dasar.
Tabrakan pergi baris demi baris.
Dan saat Anda menelusuri baris demi baris, Anda bisa melihat program ini keluar setelah crash dan
Anda akan tahu di baris mana crash terjadi.
Sekali lagi, ini adalah program kecil, tetapi Anda harus mendapatkan pemahaman dasar tentang cara kerja debugging.
Sekali lagi, saya harap ini bermanfaat.
Cara terbaik untuk mempelajari hal ini adalah dengan mulai bermain-main dengannya dan mulai menggunakannya.
Bawa salah satu program yang pernah Anda kerjakan di tantangan sebelumnya.
Tambahkan titik istirahat, sangat sederhana.
Cukup klik tepat di dalam objek untuk menambahkan break point.
Jalankan dalam mode debug dan telusuri setiap baris dan lihat bagaimana variabel berubah dan bagaimana tumpukan
panggilan meningkat.
Jika Anda memiliki fungsi yang lebih besar.
Terima kasih.