Rumah > Peranti teknologi > industri IT > Cara Debug Kesalahan Python

Cara Debug Kesalahan Python

William Shakespeare
Lepaskan: 2025-02-15 11:34:14
asal
773 orang telah melayarinya

pemahaman yang mendalam tentang kesilapan python: penyelesaian masalah yang cekap dengan introspeksi dan debugger

Artikel ini meneroka bagaimana untuk debug ralat program dengan cekap menggunakan alat introspeksi dan debug Python seperti PDB. Artikel ini akan dibangunkan dari aspek analisis maklumat kesilapan biasa, penggunaan debugger PDB, debugging persekitaran pengeluaran, dan soalan -soalan yang sering ditanya untuk membantu pembaca meningkatkan kemahiran debugging Python mereka.

How to Debug Python Errors

introspeksi kuat Python membolehkan kita memahami kesilapan runtime dengan lebih mendalam. Dengan memeriksa setiap bingkai dalam timbunan panggilan, termasuk parameter panggilan fungsi, kita dapat menghasilkan semula dan memahami kesilapan dengan lebih mudah. Alat seperti Sentry memanfaatkan sepenuhnya ciri ini untuk memberikan maklumat konteks ralat yang lebih kaya.

mari kita lihat contoh ralat python biasa:

<code>TypeError: expected string or buffer
  File "sentry/stacktraces.py", line 309, in process_single_stacktrace
    processable_frame, processing_task)
  File "sentry/lang/native/plugin.py", line 196, in process_frame
    in_app = (in_app and not self.sym.is_internal_function(raw_frame.get('function')))
  File "sentry/lang/native/symbolizer.py", line 278, in is_internal_function
    return _internal_function_re.search(function) is not None</code>
Salin selepas log masuk
Mesej ralat ini hanya memberitahu kami jenis dan lokasi ralat, tetapi tidak dapat secara langsung menunjukkan punca ralat. Kita mungkin perlu meneka bahawa bilangan bulat atau nonetype diluluskan, tetapi keadaan sebenar mungkin berbeza.

rekod log dan debugger PDB

Kaedah penyahpepijatan mudah adalah untuk menambah pembalakan:

import logging
# ...
logging.debug("function is of type %s", type(function))
Salin selepas log masuk
Ini membantu memahami jenis pembolehubah semasa pembangunan. Walau bagaimanapun, dalam persekitaran pengeluaran, pendekatan ini tidak sesuai kerana redundansi log peringkat debug.

Pada ketika ini, Debugger Python (PDB) berguna. PDB membolehkan kami melangkah melalui kod melalui titik putus dan periksa pembolehubah dan jenis mereka. Kami boleh menetapkan titik putus dengan memasukkan

ke dalam kod: import pdb; pdb.set_trace()

Selepas hits breakpoint, kami akan memasuki persekitaran interaktif PDB di mana kita boleh menggunakan
def is_internal_function(self, function):
    try:
        return _internal_function_re.search(function) is not None
    except Exception:
        import pdb; pdb.set_trace()
        raise
Salin selepas log masuk
untuk melihat jenis pembolehubah, gunakan

untuk melihat pembolehubah tempatan, dan menavigasi timbunan panggilan dengan type(function) dan locals() Perintah. down up

Debugging persekitaran pengeluaran

Dalam persekitaran pengeluaran, runtime cpython membolehkan kami mengakses timbunan panggilan semasa, termasuk pembolehubah tempatan untuk setiap bingkai pelaksanaan.

Maklumat pengecualian boleh diperolehi, termasuk objek Traceback. Dengan melintasi objek Traceback, kita boleh mengakses atribut

setiap bingkai untuk melihat pembolehubah tempatan: sys.exc_info() f_locals Alat seperti

Sentry secara automatik akan melaksanakan operasi introspeksi yang sama, memberikan maklumat konteks kesilapan yang kaya tanpa menambahkan kod secara manual.
exc_type, exc_value, tb = sys.exc_info()
inner_frame = tb.tb_next.tb_frame # 可能需要遍历tb_next找到合适的frame
pprint(inner_frame.f_locals)
Salin selepas log masuk

How to Debug Python Errors FAQ

Artikel ini akhirnya menyediakan Soalan Lazim mengenai debugging ralat Python, meliputi jenis ralat biasa, penggunaan PDB, debugging IDE, pengendalian pengecualian, debugging jauh, debugging multi-threaded, debugging perpustakaan pihak ketiga, debug masalah prestasi, dan debugging kemahiran dan dll. .

Beberapa kandungan artikel ini disesuaikan daripada artikel sentry. Terima kasih kepada rakan kongsi kami yang menyokong SitePoint.

Atas ialah kandungan terperinci Cara Debug Kesalahan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan