Debugger

Posted on March 6th, 2024
Intermediate
...

Disaat ngoding terkadang kita tidak tau apa yang akan dikeluarkan oleh program sebelum kita selesai membuat codingan. Developer bisa ragu apakah code yang ditulis itu sudah tepat hasil keluarannya? Apakah code akan berjalan sesuai yang kita inginkan? Debug menjadi solusi untuk melihat dan memastikan code berjalan sesuai yang diinginkan.

Contoh lihat program berikut

def main():
    # Penjumlahan
    num1 = 5
    num2 = 7


    sum_result = num1 + num2
    print(f"Hasil penjumlahan: {sum_result}")


main()

Disaat program diatas dijalankan, maka keluaran nya seperti berikut

Hasil penjumlahan: 12

Sekarang, kita akan coba bedah program diatas dan melihat bagaimana alur program berjalan menggunakan debugger python.

Lakukan import library pdb, ubah program menjadi seperti ini

import pdb
def main():
    # Penjumlahan
    num1 = 5
    num2 = 7


    sum_result = num1 + num2
    print(f"Hasil penjumlahan: {sum_result}")


pdb.set_trace()
main()

Disaat program diatas dijalankan, maka muncul mode debug seperti ini

> d:\path\to\main.py(11)<module>()
-> main()
(Pdb) |

Fokus pada letak debug dijalankan, yaitu bagian set_trace(). Fungsi tersebut akan membuat breakpoint pada baris yang ditetapkan. Breakpoint tersebut akan membaca kode ke bawahnya yaitu main(). Di fungsi main() inilah kita bisa eksplorasi apa saja yang di lakukan fungsi tersebut.

Lanjut ketik perintah s singkatan dari step. Step akan membaca per step baris berikutnya. Lihat hasil berikut

(Pdb) s
--Call--
> d:\path\to\main.py(2)main()
-> def main():
(Pdb)

Tulisan --Call-- memberitahu bahwa berikutnya code akan memanggil (call) fungsi main(). Lanjutkan lagi dengan ketik s

(Pdb) s
> d:\path\to\main.py(4)main()
-> num1 = 5
(Pdb)

Debugger masuk kedalam fungsi main() dan membaca baris ke 4. Lanjutkan lagi dengan ketik s

(Pdb) s
> d:\path\to\main.py(5)main()
-> num2 = 7
(Pdb)

Di kondisi sekarang, kita bisa melihat variable yang digunakan oleh num1. Ketik perintah p singkatan print untuk melihat variable num1

(Pdb) p num1
5
(Pdb)

Teruskan ketik s sampai muncul perintah return dari fungsi main(). Berikut penampilannya

(Pdb) s
Hasil penjumlahan: 12
--Return--
> d:\path\to\main.py(8)main()->None
-> print(f"Hasil penjumlahan: {sum_result}")
(Pdb)

Terakhir ketik s lagi, muncul tampilan berikut

(Pdb) s
--Return--
> d:\path\to\main.py(11)<module>()->None
-> main()
(Pdb)

Debugger kembali membaca main() dengan tulisan --Return--, debug pun selesai.

Debug adalah dasar dari inspeksi code. Dimana developer bisa melihat langkah - langkah program ketika dijalankan. Berikut info lebih lanjut library pdb https://docs.python.org/3/library/pdb.html