Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Nyahpepijat Menjalankan Aplikasi Python dengan Jejak Timbunan On-the-Fly?

Bagaimana untuk Nyahpepijat Menjalankan Aplikasi Python dengan Jejak Timbunan On-the-Fly?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-28 18:02:29397semak imbas

How to Debug Running Python Applications with On-the-Fly Stack Traces?

Nyahpepijat Aplikasi Python yang Menjalankan dengan Jejak Timbunan On-the-Fly

Menghadapi aplikasi terhenti sekali-sekala boleh mengecewakan apabila menyelesaikan masalah punca. Python menyediakan mekanisme untuk menjana surih tindanan masa nyata, membolehkan anda memeriksa kod yang sedang dilaksanakan dan mengenal pasti tempat yang bermasalah.

Penyelesaian menggunakan Pengendalian Isyarat

Kepada dapatkan surih tindanan segera, pertimbangkan untuk menggunakan kod berikut:

<code class="python">import code, traceback, signal

def debug(sig, frame):
    d={'_frame':frame}         # Allow access to frame object.
    d.update(frame.f_globals)  # Unless shadowed by global
    d.update(frame.f_locals)

    i = code.InteractiveConsole(d)
    message  = "Signal received : entering python shell.\nTraceback:\n"
    message += ''.join(traceback.format_stack(frame))
    i.interact(message)

def listen():
    signal.signal(signal.SIGUSR1, debug)  # Register handler

listen()</code>

Penggunaan:

  1. Panggil listen() untuk mendayakan pengendalian isyarat .
  2. Hantar isyarat SIGUSR1 ke proses berjalan menggunakan alat seperti kill atau kod Python: os.kill(pid, signal.SIGUSR1).

Ini akan mencetuskan Python konsol dengan surih tindanan semasa dan membolehkan anda meneroka pembolehubah. Tekan Ctrl-D untuk menyambung semula pelaksanaan.

Pilihan Tambahan

Untuk menyahpepijat proses latar belakang, pertimbangkan untuk menggunakan penyelesaian berasaskan paip yang disediakan dalam resipi Buku Masakan Python.

Atas ialah kandungan terperinci Bagaimana untuk Nyahpepijat Menjalankan Aplikasi Python dengan Jejak Timbunan On-the-Fly?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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