Katakanlah kita memiliki fungsi seperti ini:
public void myStart()
{
for (int i = 0; i<10; i++) myFunction(i);
}
private int myFunction(int a)
{
a = foo(a);
a = bar(a);
return a;
}
private int foo(int a)
{
//do something here
//something gnarly here
//etc
return aValue;
}
private int bar(int a)
{
// do something here
//return aValue;
}
Sekarang untuk alasan apa pun, kode kita tidak berfungsi. Mungkin itu melempar kesalahan, mungkin mengembalikan nilai yang salah, mungkin terjebak dalam loop yang tak terbatas.
Hal pertama yang dilakukan programmer tahun pertama, adalah mencetak ke konsol / std, (setelah mempelajari cara mencetak Hello World sebelum belajar menggunakan debugger).
Misalnya untuk men-debug kode ini mereka mungkin melakukan hal berikut:
private int myFunction(int a)
{
print("before foo: a=" + a);
a = foo(a);
print("before bar: a=" + a);
a = bar(a);
return a;
}
private int foo(int a)
{
//do something here
print ("foo step1: a=" + a);
//something gnarly here
print ("foo step2: a=" + a + " someOtherValue="+ someOtherValue + " array.length= " + someArray.length());
//etc
return aValue;
}
private int bar(int a)
{
// do something here
//return aValue;
}
Sekarang mereka menjalankan kode, mereka mendapatkan cetakan konsol besar, yang dapat mereka lacak untuk melacak di mana ada masalah.
Alternatif tentu saja, adalah untuk mengatur breakpoint dan melangkah melalui kode di setiap titik.
Satu keuntungan utama dari mencetak ke konsol, adalah bahwa pengembang dapat melihat aliran nilai-nilai dalam sekali jalan, tanpa harus mengklik langkah-langkah dll.
Tetapi kerugiannya adalah, kode Anda kemudian penuh dengan semua pernyataan cetak ini yang kemudian harus dihapus.
(Apakah mungkin memberi tahu debugger untuk mencetak hanya nilai tertentu ke log ?, breakpoints kemudian dapat dengan mudah ditambahkan atau dihapus tanpa benar-benar memodifikasi kode.)
Saya masih menggunakan pencetakan konsol sebagai metode debugging utama, saya bertanya-tanya seberapa umum / efektifnya ini dibandingkan dengan sesuatu yang lain di luar sana.