Pemrogram sungguhan menggunakan debugger? [Tutup]


15

Jika programmer berpengalaman sebenarnya pernah menggunakan debugger, dan jika demikian dalam keadaan apa. Meskipun dalam jawaban untuk pertanyaan itu saya katakan "bulan" yang lalu saya mungkin berarti "tahun" - saya benar-benar tidak menggunakan debugger. Jadi pertanyaan spesifik saya yang dapat dijawab adalah dalam keadaan apa Anda akan, sebagai programmer berpengalaman, menggunakan debugger?


14
Ini seperti menanyakan apakah programmer berpengalaman menggunakan keyboard ... Saya tidak mengerti apa yang harus dilakukan dengan itu - apakah Anda pikir mereka adalah Dewa dan membuat kode yang berfungsi sempurna tanpa kesalahan sejak awal? Dan bahkan jika demikian apa artinya bagi Anda - apakah Anda akan berhenti menggunakan debugeer ketika Anda perlu dan bintang mengatakan: "Saya tidak menggunakan debugger jadi saya reaa programmer" ... :) BTW. Saya ragu profesional mana pun akan menjawab pertanyaan seperti itu ...

3
@ Wooble: pertanyaan dasar "apakah programmer berpengalaman menggunakan debugger" adalah pertanyaan yang bagus. Ini benar-benar mengejutkan saya bahwa itu memicu perang suci mini.
Kevin

19
Pemrogram
sungguhan

4
Sebagian besar debugger yang ada sudah kuno, memiliki antarmuka yang jelek, dan mengharuskan programmer mengetahui dan memahami konsep dan paradigma yang sulit dikuasai, dan, saat ini, tidak adil untuk mengharapkan sebagian besar programmer untuk menggunakan atau mengetahuinya. Akibatnya, sebagian besar programmer yang modern, berpengalaman, berusaha keras untuk mempelajari keterampilan yang diperlukan untuk menulis jenis kode yang jarang harus di-debug dalam debugger, untuk menghindari rasa sakit dari pengalaman. Jadi "ya mereka menggunakannya" dan "sesedikit mungkin"
blueberryfields

7
Pemrogram berpengalaman yang "tidak menggunakan debugger" mungkin berpikir dalam hal gdb / SoftICE, dan tidak pernah menggunakan debugger terintegrasi yang sebenarnya (dan mungkin tidak menggunakan IDE untuk hal ini). Mereka begitu jauh ketinggalan zaman, itu menyakitkan.
BlueRaja - Danny Pflughoeft

Jawaban:


44

Saya akan mengatakan bahwa tidak menggunakan debugger adalah tanda tidak berpengalaman. Melangkah melalui kode per baris adalah cara terbaik untuk melacak alur eksekusi.


30
aneh kemudian bahwa setelah lebih dari 30 tahun pemrograman di assembler, fortran ,, C, C ++ dll. Saya merasa tidak ada keinginan untuk menggunakannya.

59
Melakukan sesuatu untuk waktu yang lama tidak selalu membuat Anda pandai.
ceejayoz

31
Tidak bisa menggunakan debugger adalah tanda tidak berpengalaman. Memahami aliran suatu program dengan hanya membaca kode tidak. Tentu saja, programmer yang berpengalaman akan membutuhkan debugger sesekali, tetapi jika Anda dapat membaca kode, tidak perlu, dan itu tidak akan membuat proses debugging lebih cepat baik.
GolezTrol

10
@Karl Bielefeldt: Izinkan saya menyebutkan beberapa contoh programmer terkenal yang tidak menggunakan debugger untuk debugging. Linus Torvalds, penulis Linux. Larry Wall, penulis Perl. Perangkat lunak yang cukup kompleks untuk Anda?
btilly

9
@Neil: berapa banyak waktu yang Anda habiskan untuk mengerjakan kode Anda sendiri, dan berapa banyak pemeliharaan kode yang ditulis oleh orang lain? Dan khususnya, berapa banyak pemeliharaan kode yang ditulis oleh orang lain yang seharusnya tidak pernah diizinkan di dekat bahasa pemrograman?
Carson63000

28

Saya sering menggunakan debugger, karena saya bekerja pada sistem yang besar dan karenanya saya payah. http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html

Tidak peduli seberapa pendek dan sering membaca kode Anda, selalu ada kemungkinan bahwa ia akan memiliki bug. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html

Untuk berbuat salah adalah manusia dan orang tidak pernah dapat membuktikan bahwa suatu program benar, jadi mengapa tidak menggunakan alat seperti debugger / pengujian otomatis untuk membantu diri kita sendiri dalam bisnis yang sulit ini?

Jika kodenya cukup pendek, maka tes sederhana akan dilakukan. Juga, jika pendek dan Anda tahu sifat bug, membaca kode bisa cukup. Namun, begitu basis kode besar, melibatkan beberapa bahasa yang dicampur bersama, ditambah 3 tingkatan, maka Anda harus memiliki cakupan pengujian yang baik pada banyak tingkatan plus debugger yang sangat baik - jika tidak, Anda akan menghabiskan banyak waktu.

Jadi, kapan saya tidak perlu debugger?

Saya bukan pembuat kode yang paling pintar, juga bukan yang paling berpengalaman, tapi tetap saja, terkadang saya tidak perlu menggunakan debugger. Saat itulah:

  • Kode ini milik saya atau ditulis dengan baik
  • Itu ditulis dalam bahasa yang dapat dibaca DAN
  • Keseluruhan proyek kecil.

Kapan saya sangat mengandalkan debugger?

  • Jawaban Singkat: sering .
  • Saat aplikasi mogok. Khususnya ketika digunakan. Memiliki VS2010 yang diinstal pada komputer itu dapat membuat perbedaan antara "Kesalahan Tidak Diketahui" dan FileNotFoundException.
  • Ketika pustaka pihak ke-3 crash atau bertingkah buruk.
  • Ketika kode ditulis dengan buruk. Terutama jika file yang sama disentuh oleh 10 orang yang berbeda dalam 10 tahun terakhir, 7 di antaranya tidak lagi bersama perusahaan.
  • Ketika proyek besar
  • Ketika kode agak monolitik.
  • Ketika ada beberapa tingkatan (GUI, SQL, BL) yang terlibat.

Perhatikan bahwa "debugger" dapat merujuk ke lebih dari satu alat. Saya menggunakan Visual Studio debugger, SQL debugger (kebanyakan untuk procs tersimpan) dan SQL profiler juga (untuk mencari tahu SP mana yang dipanggil). Apakah saya memerlukan alat kaliber ini saya sedang menulis skrip Python sysadmin-ish cepat? Tidak. Jika saya membuat alat kecil berbasis GUI sendiri? Tergantung. Jika. WinForms Net -. Mungkin tidak Jika WPF - ya.

Apa yang mendefinisikan programmer "nyata"? Yang cepat? berpengetahuan luas? Apakah pandai algoritma? Menulis dokumentasi yang bagus? Kapan tepatnya seseorang lulus ke gelar baru ini? Kapan seseorang melewati garis magis?

Saya akan mengatakan bahwa seorang programmer yang tidak mendapatkan tangannya kotor dalam upaya 100 + man-tahun yang ada belum memiliki kesempatan untuk direndahkan oleh kompleksitas dan keterbatasan sendiri (serta frustrasi dengan kualitas kode).

Saya pribadi mencoba menggunakan debugger terbaik yang tersedia untuk saya, dan saya cenderung sering menggunakannya. Jika tugas cukup sederhana dan tidak memerlukan debugger - Saya tidak menggunakannya. Tidak butuh waktu terlalu lama untuk menentukan apakah saya membutuhkannya atau tidak.

...

Sekarang, secara teori saya bisa membaca basis kode begitu lama, sehingga saya akan mendapatkannya. Namun, pendekatan langsung bekerja paling baik, ditambah lagi saya sering ingin menulis ulang kode bodoh yang saya lihat. Sayangnya butuh 10+ tahun untuk membersihkan basis kode yang saya gunakan. Jadi, menggunakan debugger adalah langkah pertama yang jelas. Hanya ketika saya mengetahui salah satu dari 5 juta baris kode mana yang bekerja, saya akan memindai file naik dan turun untuk mencoba mencari tahu apa yang dilakukan kelas itu.


+1, jawaban yang sangat baik, saya terutama setuju dengan aspek "ketika ada beberapa tingkatan yang terlibat", itulah yang jarang disebutkan oleh pendukung "baca saja kode dan temukan kesalahannya".
Carson63000

Senang Anda bisa membaca semuanya.
Pekerjaan

+1 untuk jawaban yang bagus dan untuk memeriksa definisi "programmer nyata". Penggunaan frasa ini membuat OP licik, menarik, dan berpotensi radang (karena meremehkan implikasi atau sindiran).
Smandoli

1
"orang tidak akan pernah bisa membuktikan bahwa suatu program benar" Itu tidak benar.
GManNickG

1
@ GM, tolong jelaskan pernyataan Anda. Seperti yang telah saya pelajari, banyak upaya sebelumnya untuk membuktikan kebenaran potongan pendek kode untuk bahasa tertentu telah gagal, misalnya beberapa bug telah ditemukan setelah bukti selesai (oleh seorang profesor yang mengkhususkan diri dalam bukti semacam itu). Beberapa program yang sangat sepele bisa dibuktikan benar, saya kira. Saya ingin tahu sudut pandang Anda di sini.
Pekerjaan

17

"Aku tidak suka para penentang. Tidak pernah, mungkin tidak akan pernah." - Linus Torvalds

Di sisi lain, dia tidak memiliki akun Stack Overflow, jadi saya tidak yakin apakah Anda tertarik dengan pendapatnya :)


3
Tidak banyak dari kita adalah Linus Torvalds, untuk kita semua hanya manusia, kita membutuhkan debugger.
Nodey The Node Guy

7
kernel tidak cocok dengan para debugger.

7
Ya, pemrograman kernel adalah bidang yang berbeda dari pemrograman userspace. Saya biasanya tidak setuju dengan pendapat Linus untuk userspace, tetapi mereka jelas terhormat ketika berhadapan dengan kernel.
alternatif

16
"Saya tidak suka debugger" tidak berarti "Saya tidak menggunakan debugger." Apa yang sebenarnya dikatakan Linus adalah "Saya tidak suka debugger. Tidak pernah, mungkin tidak akan pernah. Saya menggunakan gdb sepanjang waktu, tetapi saya cenderung menggunakannya bukan sebagai debugger, tetapi sebagai pembongkar steroid yang dapat Anda programkan." (Saya tahu beberapa akan mencoba untuk memutar itu berarti bahwa Linus tidak menggunakan debugger, tapi itu tidak akurat.)
Kristopher Johnson

6
Sepertinya Linus Torvalds dan saya tidak pernah menyetujui apa pun.
BlueRaja - Danny Pflughoeft

12

Jadi pertanyaan spesifik saya yang dapat dijawab adalah dalam keadaan apa Anda akan, sebagai programmer berpengalaman, menggunakan debugger?

  • Ketika Anda tidak dapat "men-debug" dengan membaca kode Anda.
  • Saat Anda tidak dapat memprediksi nilai apa yang diberikan variabel tertentu pada waktu tertentu.
  • Ketika model mental kode Anda tidak sesuai dengan output yang diberikan oleh kode Anda

Edit:

Saya beruntung / tidak beruntung karena tidak tahu cara menggunakan debugger dalam perjalanan pemrograman saya. Jadi di masa lalu saya dipaksa untuk debug tanpa debugger. Namun setelah belajar menggunakan debugger -> Saya menjadi 100x lebih produktif dalam menemukan bug.


+1 untuk "Ketika model mental kode Anda tidak sesuai dengan output yang diberikan oleh kode Anda"
pengguna

8

Untuk memberikan perspektif yang sedikit berbeda dari jawaban saat ini; Sebagai seorang insinyur perangkat lunak tertanam yang bekerja pada sistem yang sering memiliki komponen real-time, saya jarang menggunakan debugger.

Kadang-kadang debugger bisa menjadi alat yang luar biasa dan setiap kali saya bisa membangun dan menjalankan kode pada desktop maka saya akan selalu menggunakan debugger.

Pada chip, dengan batasan waktu nyata, maka ada beban berat yang terkait dengan mencoba menggunakan debugger. Segera setelah Anda menjeda eksekusi, Anda kemungkinan besar akan kesal, kemungkinan fatal, waktu dari sisa sistem. Umumnya pada chip, printf dalam kode non-kritis dan IO bertaruh dalam kode waktu-kritis adalah alat terbaik dan sebenarnya paling sederhana. Ini tidak sebagus debugger, tetapi jauh lebih murah untuk bekerja dengan sistem nyata.


1
Anda mungkin ingin menyelidiki papan debugger berbasis perangkat keras
Steven A. Lowe

@ Sebelas terima kasih; sayangnya sementara beberapa sistem tempat saya bekerja memiliki dukungan perangkat keras yang sesuai, yang lain tidak. Sementara kita umumnya memiliki opsi penganalisis logika, ini cenderung lebih mahal dalam hal waktu.
Luke Graham

Saya justru sebaliknya. Saya lebih sering menggunakan debugger pada sistem embedded. Saya setuju tentang hal itu mengganggu waktunya. Dibutuhkan cukup banyak upaya untuk menyaring dan / atau meminimalkan perubahan yang disebabkan oleh menempatkan debugger di loop.
Karl Bielefeldt

7

Saya pikir programmer yang berpengalaman hampir secara eksklusif menggunakan debugger, ketika mereka dibutuhkan. Apa cara yang lebih baik untuk melacak bug daripada benar-benar mengikuti eksekusi kode ...

Apakah Anda di bawah asumsi bahwa Skeets dunia tidak melakukan kesalahan atau hanya mengetahui segalanya? Semua kecuali program yang paling sepele berperilaku dengan cara yang tidak terduga dalam beberapa keadaan. Sudah pasti bahwa masalah harus diselidiki. Jadi pilihannya adalah menggunakan pernyataan cetak, di satu sisi spektrum, atau melihat memeriksa apa yang terjadi, post mortem, di sisi lain, atau melihat tepat di tengah saat kode dijalankan dan mencari tahu apa yang terjadi.

Mungkin cara berpikir yang lebih baik adalah bahwa programmer yang berpengalaman tahu kapan harus menggunakan debugger. Dalam kode dengan sedikit ketergantungan melihat jejak stack mungkin cukup untuk mencari tahu apa yang salah. Tetapi ada skenario rumit di mana kode Anda bekerja dengan kode lain, dan Anda memerlukan debugger untuk melihat hal-hal yang tidak Anda tulis.


4
Nah, inilah tepatnya yang saya coba selidiki - Saya seorang programmer yang sangat berpengalaman dan saya tidak pernah menggunakannya.

5
@neil, mungkin Anda tidak perlu. Yakinlah, saatnya akan tiba di mana debugger akan menjadi cara paling sederhana untuk sampai ke dasar masalah, apakah Anda benar-benar berakhir menggunakan satu ....
hvgotcodes

Saya bisa membaca hal-hal yang tidak saya tulis juga. Dan jika saya tidak bisa, ini biasanya karena itu adalah kode yang buruk. Dalam kasus lain, saya menggunakan debugger.
GolezTrol

Jika bahasa yang Anda gunakan mendukung pengecualian, dan jika Anda menggunakannya + kerangka kerja pendataan yang tepat (mis. Log4j atau sesuatu seperti itu) Anda akan selalu berakhir dengan jejak tumpukan yang menunjuk ke garis kesalahan Anda. 99% dari waktu itu merupakan pengecualian penunjuk nol di mana Anda tidak mengharapkannya. Apa lagi yang akan memberitahu debugger kepada Anda? Sekarang, ketika saya sedang pemrograman di c, ada hal-hal yang tidak bisa Anda temukan tanpa debugger (misalnya tumpukan korupsi). Tetapi hal-hal semacam itu tidak terjadi lagi dalam bahasa tingkat tinggi.
Kevin

1
@ Kevin, benar, saya pikir ada kelas masalah antara keduanya di mana debugger adalah cara paling alami untuk sampai ke bagian bawah masalah. Mungkin saya ingin melihat properti dinamis diletakkan pada objek dalam kerangka bahasa dinamis seperti grails. Mungkin saya ingin melihat secara tepat di mana sesuatu yang saya pikir bukan nol dibuat nol (NPE memberi tahu Anda di mana pengecualiannya, bukan mengapa masalahnya nol). Mungkin saya ingin debugger saya berhenti pada pengecualian sehingga saya dapat melihat kombinasi kode apa yang menyebabkan pengecualian, tidak hanya itu terjadi di stacktrace.
hvgotcodes

4

Saya tidak, dan saya sudah pemrograman selama lebih dari 10 tahun. Saya dulu, ketika saya diprogram dalam c / c ++. Sekarang saya memprogram di java. Yang benar adalah bahwa jika Anda melakukan logging dengan benar, Anda akan berakhir dengan jejak stack yang cukup untuk sebagian besar pengembang yang terampil. Juga jika Anda menulis unit test (baik), dan tes fungsional, yang menghilangkan seluruh kelas bug.


Jika lebih jelas, saya tahu banyak programmer java yang menggunakan debugger. Mereka sebagian besar keluar dari sekolah.
Kevin

1
stacktraces tidak menampilkan data - Anda harus menambahkan informasi itu sendiri - tetapi mereka murni emas.

1
@ Thorbjørn: Mereka dapat menampilkan data, sebenarnya: lihat modul cgitb Python , misalnya. (CGI dalam nama sebagian besar adalah sisa-sisa, tujuan asli modul adalah untuk menyajikan jejak tumpukan yang dapat digunakan ketika CGI mengalami crash.) Tentu saja, dengan itu, Anda terkadang mendapatkan begitu banyak data sehingga menjadi sulit untuk dinavigasi ke tumpukan bingkai minat. Tapi aku cgitb.enable(format='text')tetap cinta .
SamB

Saya tidak benar-benar menggunakan debuggers dan saya menggunakan C ++ ..
Nikko

@ Sam Kevin berbicara tentang Java, yang tidak bisa seperti itu

4

Siapa peduli? Yang ingin saya ketahui adalah apakah menggunakan debugger akan mencegah saya menjadi programmer yang lebih baik dalam jangka panjang? Mungkin debugger memiliki kualitas yang lebih rendah ketika banyak pengembang berpengalaman memulai sehingga mereka menjadi penghalang. Apakah itu penopang yang mencegah pemahaman yang lebih dalam?

Beberapa programmer, mungkin lebih baik daripada kita semua, menemukan kebutuhan untuk debugger dan membangun satu (Tidak tahu siapa yang menciptakan yang pertama.). Saya yakin mereka lebih produktif karenanya. Saya ragu motivasinya adalah untuk memungkinkan manusia yang lebih rendah untuk menulis kode.


3

Jarang.

Metode Anda harus kecil / cukup sederhana untuk dikompilasi dan dijalankan oleh pikiran Anda, unit test harus mencakup fungsionalitas. Jika Anda menemukan bug, tulis tes. Jalankan, perbaiki.

Saya hanya cenderung menggunakan debugger ketika ive mendapat perilaku tak terduga dari kode yang tidak bisa diuji, seperti kerangka ASP.NET.


3
ada beberapa noobs pembenci nyata di utas ini ...

2
TIDAK ada alasan untuk memilih ini - dia benar.
wadesworld

11
-1 karena klaim ini seperti mengatakan cara menghasilkan uang di Vegas adalah dengan memenangkan setiap tangan. Itu tidak mencerminkan kenyataan situasi, dan klaim bahwa semua kode akan sederhana hanya ada dalam masalah kecil yang terisolasi. Selain itu, klaim "jalankan, perbaiki" sepenuhnya mengabaikan cara Anda memperbaikinya. Saya akan membiarkannya meluncur tetapi kemudian menyindir bahwa semua orang yang tidak setuju membuatnya layak untuk kalah memilih.
whatsisname

2
-1: "Metode Anda harus kecil / cukup sederhana untuk dikompilasi dan dijalankan oleh pikiran Anda" tidak terhubung dengan kenyataan. Itu seperti mengatakan fungsi yang lebih panjang dari 20 baris terlalu panjang. Omong kosong.
John Dibling

3

Di Smalltalk, saya mengembangkan hampir seluruhnya di debugger:

  1. Tulis tes yang saya tahu akan gagal.
  2. Jalankan tes. Ketika gagal, debugger akan muncul.
  3. Tulis, di debugger, kode yang diperlukan untuk membuat lulus ujian.
  4. Lanjutkan eksekusi.
  5. Jika saya mendapatkan lampu hijau, lanjutkan ke langkah 1 dengan tes gagal baru. Kalau tidak, di debugger cari tahu kesalahan saya dan perbaiki.

2

Saya menggunakan debugger ketika saya perlu. Itu tidak setiap hari, tetapi itu terjadi sesekali. Terkadang lebih baik melangkah melalui kode untuk melihat apa yang sebenarnya terjadi.

Saya harus mengakui bahwa saya semakin jarang menggunakan debugger. Saya telah berkembang di Delphi selama lebih dari 10 tahun. Saya juga menulis prosedur tersimpan dalam PL / SQL. Sejak beberapa bulan, saya juga seorang pengembang PHP.

Saya terutama menggunakan debugger dalam salah satu dari kasus ini jika saya menemukan sepotong kode tidak jelas yang ditulis tahun lalu dan saya perlu memodifikasinya. Terkadang membantu untuk mengetahui cara kerja suatu program jika sulit untuk membaca kodenya. Dalam PHP itu hampir tidak pernah diperlukan, tetapi dalam Delphi, yang berbasis peristiwa, kadang-kadang membantu ketika Anda mendapatkan kerangka kerja yang kompleks.

Tapi seperti yang Anda katakan, menggunakan debugger adalah pengecualian. Sebagian besar masalah diselesaikan dengan hanya membaca kode dan memperbaiki kesalahan yang Anda (atau orang lain) buat.

Tapi itu berlaku untuk melangkah melalui kode. Saya cukup sering menggunakan stack panggilan ketika pengecualian terjadi, dan saya kadang-kadang meletakkan breakpoint di suatu tempat untuk memeriksa variabel. Tetapi hampir selalu dalam sepotong kode yang membutuhkan refactoring menyeluruh pula.


2

Saya kadang-kadang kode tanpa debugger, tetapi hanya ketika dipaksa di bawah todongan senjata, yaitu. warisan tertanam gunge pada 8051 atau Z80.

IMHO, Anda memerlukan debugger dan masuk pada pekerjaan kompleks apa pun. Sekali bukan merupakan pengganti yang lain. Sistem pencatatan tidak dapat membantu jika aplikasi memasukkan driver, misalnya, di mana satu-satunya hal yang dapat dilakukan kode adalah berinteraksi dengan perangkat keras dan mengatur semafor.

Seorang debugger tidak dapat membantu dengan kesalahan sistem di mana aplikasi bekerja dengan baik sesuai dengan cara Anda menulisnya, tetapi sistem masih tidak berfungsi karena beberapa kesalahan protokol komunikasi terputus-putus.

Jadi, saya perlu debugger untuk menghapus bugup yang mencolok, bug dan hardware. Saya perlu pencatatan yang baik untuk menangkap bug integrasi sistem intermiten.

Saya harus memiliki keduanya - Saya butuh semua bantuan yang bisa saya dapatkan!


2
Z80 cukup besar untuk debugger. CP / M memiliki ZSID.

1

Saya hanya menggunakan debugger ketika langkah-langkah ini gagal:

  1. Dapatkan kesalahan yang dapat direproduksi. Berpikir. Inilah yang sering dibutuhkan.
  2. Periksa semua jejak tumpukan dan log.
  3. Tambahkan lebih banyak logging di sekitar kode yang menyinggung.

Langkah-langkah ini menangani 95% dari semua kasus. Itu berarti saya jarang menggunakan debugger, dan ketika saya melakukannya, itu cenderung memberi saya terlalu banyak informasi dan saya terjebak dalam detail yang tidak terkait. Ini terutama benar jika bekerja pada sistem waktu-nyata multi-threaded.

Jadi, pernyataan logging yang ditempatkan dengan bijaksana berjalan jauh.


1

Mungkinkah pemrogram yang sangat berpengalaman itu sama dengan pemrogram yang sangat tua, dan mereka belajar memprogram, dan membentuk kebiasaan mereka, dulu ketika debugger tidak selalu tersedia, dan kadang-kadang tidak terlalu baik?

Jika Anda benar-benar hebat dalam debugging printf (dan kembali pada tahun delapan puluhan, kami tidak punya banyak pilihan selain menjadi sangat baik dalam hal itu), mungkin debugger tidak menambahkan sebanyak itu.


0

Ini pertanyaan pilihan pribadi.

Jujur saya pikir debuggers berguna dalam situasi tertentu di mana itu membantu banyak mengetahui apa yang terjadi pada ram Anda pada setiap langkah tertentu dari eksekusi program Anda.

Utilitas utama dari debugger adalah untuk menghentikan suatu program tanpa program yang dirancang untuk menghentikan dirinya sendiri: fitur ini cukup penting.

Terlepas dari 2 fitur itu, saya tidak berpikir debugger benar-benar diperlukan; program kompleks apa pun yang Anda buat harus memiliki semacam mode "verbose", yaitu menceritakan semua yang dilakukannya dengan printf atau std :: cout, pilihan apa yang dibuatnya, dan banyak parameter lainnya.

Bayangkan saja Anda membuat sebuah program, dan pengguna memiliki masalah dalam menggunakannya: bagaimana cara mengetahui apakah ia menggunakan cara itu dirancang untuk digunakan, atau jika hal yang dikeluhkannya mungkin berupa bug?

Debugger seperti setir elektrik untuk mobil Anda: lebih nyaman memilikinya, tetapi tidak akan membuat drive Anda lebih baik.

Progamming adalah tentang desain dan logika, cara alat dapat membantu Anda dalam melacak hal-hal tidak membuat Anda menjadi programmer yang lebih baik.

Plus debugger berguna untuk bahasa yang dikompilasi, apalagi untuk yang intepret.


2
Saya tidak mengerti apa hubungannya kompilasi vs ditafsirkan.
Michael Burr

pertanyaan yang bagus: saya juga.
jokoon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.