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

Mary-Kate Olsen
Lepaskan: 2024-10-28 18:02:29
asal
389 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
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