Wie debugge ich laufende Python-Anwendungen mit On-the-Fly-Stack-Traces?

Mary-Kate Olsen
Freigeben: 2024-10-28 18:02:29
Original
390 Leute haben es durchsucht

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

Fehlerbehebung beim Ausführen von Python-Anwendungen mit On-the-Fly-Stack-Trace

Gelegentliche Anwendungsabstürze können bei der Fehlersuche nach der Grundursache frustrierend sein. Python bietet einen Mechanismus zum Generieren eines Echtzeit-Stack-Trace, der es Ihnen ermöglicht, den aktuell ausgeführten Code zu überprüfen und die problematische Stelle zu identifizieren.

Lösung mit Signalverarbeitung

Zu Um einen Stack-Trace im laufenden Betrieb zu erhalten, sollten Sie den folgenden Code verwenden:

<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>
Nach dem Login kopieren

Verwendung:

  1. Rufen Sie listen() auf, um die Signalverarbeitung zu aktivieren .
  2. Senden Sie ein SIGUSR1-Signal an den laufenden Prozess mit einem Tool wie kill oder dem Python-Code: os.kill(pid, signal.SIGUSR1).

Dadurch wird ein Python ausgelöst Konsole mit dem aktuellen Stack-Trace und ermöglichen Ihnen das Erkunden von Variablen. Drücken Sie Strg-D, um die Ausführung fortzusetzen.

Zusätzliche Option

Zum Debuggen von Hintergrundprozessen sollten Sie die Verwendung einer Pipe-basierten Lösung in Betracht ziehen, die im Rezept des Python-Kochbuchs bereitgestellt wird.

Das obige ist der detaillierte Inhalt vonWie debugge ich laufende Python-Anwendungen mit On-the-Fly-Stack-Traces?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage