Debug Python Seperti Pahlawan dengan Perpustakaan dan Alat ini
Diterbitkan: 2022-06-26Apakah Anda ingin menjadi ahli debugging Python yang sebenarnya? Debug kode Python Anda menggunakan alat dan pustaka debugging Python yang luar biasa ini yang akan segera kami bahas!
Python adalah bahasa pemrograman tujuan umum, tingkat tinggi, dan berorientasi objek yang digunakan untuk banyak tujuan pengembangan. Selain itu, ini adalah alat pengembangan yang efektif untuk berbagai aplikasi, mulai dari pengembangan aplikasi web hingga pengikisan web dan aplikasi yang lebih kompleks seperti Pembelajaran mesin dan Ilmu Data.
Selama pengembangan, kesalahan yang disebut bug dalam pemrograman rentan terjadi. Pengembang mengambil beberapa langkah untuk mendeteksi dan menghilangkan bug yang ada dan potensial dari kode. Akibatnya, Anda mencegah kode program hancur. Kami menyebut proses ini debugging.
Artikel ini akan melihat beberapa debugger Python yang tersedia yang dapat Anda gunakan. Kita juga akan melihat betapa berbedanya debugger ini satu sama lain dan apa yang membuat implementasinya efektif.
Pustaka debugging cProfiler
cProfiler, adalah pustaka populer dan ekstensi C yang mengeksekusi pembuatan profil kode yang sudah berjalan lama. Dalam jangka panjang, ini mengidentifikasi bagian dari kode program yang membutuhkan waktu lama untuk dijalankan. Meskipun mengidentifikasi waktu yang tepat yang dibutuhkan untuk menjalankan bagian kode yang berbeda, itu tidak sepenuhnya mengidentifikasi atau memperbaiki bug dalam kode.
Oleh karena itu, kebutuhan untuk menggunakan debugger lain muncul.
Untungnya, Anda dapat menggunakan pustaka yang direkomendasikan seperti ipdb, Django-debug-toolbar, pyelftools, viztracer, dan py-spy sebagai alat debugging untuk kode Python Anda.
Alat debugging ipdb
Debugger Python berkemampuan IPython secara penuh adalah debugger pihak ketiga interaktif yang berisi fungsionalitas pdb. Ipbd juga dilengkapi dengan dukungan shell IPython interaktif. Dukungan tersebut mencakup penyelesaian tab, dukungan warna, dan fungsi ajaib, di antara fitur dukungan lainnya.
Debugger ini memungkinkan akses ke debugger IPython dengan mengekspor fungsi yang relevan. Ia juga menawarkan antarmuka serupa untuk introspeksi yang lebih baik, seperti di modul pdb.
Debug dengan Ipdb
Perpustakaan membutuhkan instalasi menggunakan perintah pip di bawah ini.
pip install ipdb
Contoh penggunaan ipdb akan terlihat seperti ini:
import ipdb alpha_list = ['a', 'b', 'c'] fruit_list = ['orange', 'mango', 'kiwi'] def nested_loop(): for fruit_list: print (fruit) ipdb.set_trace() for x in alpha_list: print(x) if __name__ == '__main__': nested_loop()
Jalankan file python menggunakan perintah di bawah ini di mana test.py adalah nama file saya:
python -m ipdb test.py
Impor ipdb dan menjalankan fungsi ipdb.set_trace()
memungkinkan awal program dan menjalankan debugger melalui eksekusi.
Fungsi ipdb.pm()
(post-mortem) bertindak mirip dengan fungsi ajaib %debug
.
argumen set_trace
Lewati konteks sebagai argumen ke set_trace
untuk menampilkan beberapa baris kode yang ditentukan. Selain itu, cond
, yang juga diterima oleh set_trace
sebagai argumen, menerima nilai Boolean, dan memulai antarmuka ipdb saat Anda menyetel cond
ke true
.
Menggunakan file konfigurasi
Atur argumen konteks dengan file idpdb atau file setup.cfg
yang masing-masing tersedia di folder home dan folder proyek. Anda dipersilakan untuk memeriksa fungsionalitas ipdb lebih lanjut.
Bilah alat Django Debug
Toolbar debug Django adalah alat debugging populer di Django: kerangka kerja Python.
Kumpulan panel yang dapat dikonfigurasi ini menampilkan informasi debug permintaan atau respons saat ini. Saat Anda mengklik bilah alat, detail lebih lanjut tentang konten panel akan ditampilkan.
Alat ini secara menyeluruh memeriksa lingkungan pengembangan Django.
Ikuti proses instalasi dan petunjuk konfigurasi di sini.
Pustaka Pyelftools
Pustaka pyelftools murni dibangun di atas Python. Ini mem-parsing dan menganalisis file ELF dan informasi debugging DWARF dan hanya membutuhkan Python untuk dijalankan.
Menggunakan Pyelftools mudah karena tidak memiliki perpustakaan eksternal. Selain itu, menggunakan pyelftools tanpa instalasi cukup mudah karena hanya perlu menyesuaikan PYTHONPATH
dalam variabel lingkungan.
Anda akan menginstalnya menggunakan:
pip install pyelftools
Implementasi pyelftools hanya perlu mengimpornya dan menjalankannya di program Anda.
Alat debugging es krim
Ini adalah alat debugging efisien lainnya untuk pengembang Python.
Menggunakan icecream, juga ic()
, hadir dengan banyak manfaat dibandingkan print(), seperti diuraikan di bawah ini:

- Mengetiknya relatif lebih cepat, secara harfiah.
- Ini mencetak struktur Data dengan cukup baik.
- Cetak ekspresi atau nama variabel dan nilainya dengan
ic()
. - Ini menyoroti sintaks output.
- Opsional, itu termasuk konteks program, termasuk nama file, nomor baris, dan fungsi induk.
Sebelum menggunakan paket ini, instal menggunakan perintah pip di bawah ini:
pip install icecream
Hal baiknya adalah Anda dapat memanfaatkan ic()
di semua file tanpa harus mengimpornya di semua file dengan menginstalnya menggunakan install()
. Selain itu, install()
menambahkan ic()
ke modul bawaan. Semua file yang diimpor juru bahasa akan dibagikan ic()
.
Dalam file python root pertama Anda, yang dapat Anda beri nama x.py, tambahkan ic()
menggunakan install()
.
from icecream import install install() from y import mult mult()
Di y.py fil file x.py sedang diimpor, panggil ic()
def mult(): z=8 ic(z)
Hasil:
y ic| z : 8
Apa yang membuat ic() lebih efisien adalah kemampuannya untuk memeriksa variabel yang diteruskan ke sana, termasuk dirinya sendiri, lalu mencetak argumennya dan nilai argumennya seperti pada contoh berikut.
from icecream import ic def mult(x): return x * 4 ic(mult(100))
Keluaran:
ic| mult(100): 400
Selain itu, Anda dapat memasukkan ic() ke dalam kode yang sudah ada karena ia mengembalikan argumennya. Contoh di bawah ini mengembalikan ic| x: 12
ic| x: 12
, lalu ic| y: 48
ic| y: 48
.
from icecream import ic x = 12 def mult(x): return x*4 y = mult(ic(x)) ic(y)
Debugging menggunakan alat py-spy
Anda dapat menggunakan py-spy untuk membuat profil sampel untuk program Python sebagai alat debugging. Tanpa memulai ulang program atau memodifikasi kodenya, py-spy memvisualisasikan eksekusi program Python. Selain itu, karena ditulis dalam Rust, ia memiliki overhead yang rendah.
Selain itu, perlu dipertimbangkan bahwa menggunakan py-spy terhadap kode Python produksi aman karena menjalankan proses yang berbeda dari program Python yang diprofilkan.
Seperti setiap alat sebelumnya yang telah kita lihat, Anda dapat menggunakan alat py-spy setelah menginstalnya.
pip install py-spy
Meskipun program Python Anda melayani lalu lintas produksi, Anda masih dapat membuat profil dan men-debug program ini menggunakan py-spy, menjadikannya alat profiler Python yang penting.
Debugger Viztracer
Atau, Anda dapat menggunakan viztracer, alat debugging, untuk melacak dan memvisualisasikan eksekusi program Python Anda. Ini juga merupakan alat pembuatan profil dengan pencatatan overhead rendah.
Apa yang membuat viztracer menjadi alat debugging yang efektif?
- Menggunakannya cukup mudah, dan tidak bergantung pada paket eksternal untuk bekerja.
- Viztracer beroperasi pada semua platform Sistem Operasi: Windows, Linux, atau macOS.
- Front-endnya yang kuat dengan lancar membuat jejak tingkat GB.
- Ia menggunakan RegEx untuk mencatat fungsi arbitrer dan informasi tambahan seperti variabel dan atribut, Pengecualian yang Dibesarkan, operasi Pengumpul Sampah, dll., tanpa mengubah bagian kode apa pun dalam kode sumber Anda.
- Apa yang membuat viztracer alat debugging overhead rendah adalah kemampuannya untuk menyaring data yang tidak Anda perlukan dalam program Anda. Kemudian menyimpan informasi lama sebelum membuang log dalam format JSON.
- Anda dapat menggunakannya untuk menyisipkan peristiwa khusus seperti peristiwa instan, peristiwa variabel, dan peristiwa Durasi saat program berjalan. Dengan cara ini, ini berfungsi seperti debug cetak, kecuali viztracer memberi tahu Anda saat pencetakan terjadi saat Anda melacak data.
Kesimpulan
Pembuatan profil dan debugging Python seperti halnya pembuatan profil perangkat lunak adalah langkah kunci dalam pengembangan yang membutuhkan perhatian. Langkah ini membantu untuk mengesampingkan setiap bagian kode dengan bug sehingga kinerja keseluruhan kode dioptimalkan.
Alat debugging yang telah kita bahas di atas adalah alat yang efisien yang membuat pekerjaan pengembang Python cukup mudah.
Melihat bahwa alat debugging lain bekerja lebih efektif daripada cProfiler, Anda dapat, seperti pahlawan sejati, men-debug kode Python Anda dan memperbaiki bug potensial menggunakan debugger ini untuk mencegah kode Anda berjalan tanpa mogok.
Selamat Debug!