Rufen Sie den Python-Debugger jederzeit auf

Oft schreibe ich Python-Code und möchte den Debugger irgendwann aufrufen. Wenn Sie die Situation kennen, die Sie im Voraus aufrufen möchten, können Sie einfach einen Haltepunkt in pdb angeben oder "import pdb; pdb.set_trace ()" in Ihren Code einbetten, aber das Timing ist völlig "willkürlich". Das ist nicht der Fall. Als ich untersuchte, ob es möglich war, eine Verbindung zu einem laufenden Prozess in gdb herzustellen, gab es in StackOverflow eine elegante Methode, daher werde ich sie hier aufzeichnen.

python - Attaching a process with pdb - Stack Overflow

python


import signal
def handle_pdb(sig, frame):
    import pdb
    pdb.Pdb().set_trace(frame)
if __name__ == '__main__':
    signal.signal(signal.SIGUSR1, handle_pdb)

Was wir tun, ist so einfach wie das Aufrufen von pdb, wenn das Signal SIGUSR1 aufgerufen wird. Sie können es verwenden, es sei denn, Sie verwenden SIGUSR1 bereits für andere Zwecke. Sie können andere verfügbare Signale verwenden.

vgl. gdb direkt verwenden

Die heutige GDB hat Python integriert, das erweiterte Operationen ermöglicht. Wenn Sie ein Debug-Symbol für Python haben, ist es meiner Meinung nach möglich, es direkt mit gdb anzuhängen und den Quellcode auf Python-Ebene zu verfolgen. Das von Herrn Nojima in der Daiunetsu Debian Study Group vorgelegte Material aus dem Jahr 2013 wird hilfreich sein. Hier machen wir Debugging auf Source-Ebene von PHP. Die Behandlung von Debug-Symbolen hängt vom Betriebssystem, der Verteilung und der Installationsmethode ab. Lesen Sie daher diesen Punkt entsprechend.

Recommended Posts

Rufen Sie den Python-Debugger jederzeit auf
Zum Zeitpunkt des Python-Updates mit Ubuntu
Holen Sie sich zu jeder Tageszeit eine Datums- / Uhrzeitinstanz in Python
Rufen Sie die API mit python3 auf.
Siehe Python zum ersten Mal
[Python 3.8 ~] Schreiben Sie Arrays usw. gleichzeitig mit der Definition neu [Tipps]
MongoDB mit Python zum ersten Mal
Python-Grundkurs (Ende 15)
Installieren Sie das Python-Modul in einem beliebigen Verzeichnis
[Python] [Maschinelles Lernen] Anfänger ohne Wissen versuchen vorerst maschinelles Lernen
[Python] So öffnen Sie zwei oder mehr Dateien gleichzeitig
Erster Python
[Python] Farbiges Kartenplot auf der Ebene von Stadt / Gemeinde / Stadt / Dorf
[Python] Checklistenelemente alle, alle
33 Auswahlen, die der Soshage-Ingenieur bei der Überprüfung von Codes hervorhebt [jederzeit hinzugefügt]
Verwenden Sie vorerst Logger mit Python
Python-Zeitmessung
Ich habe zum ersten Mal versucht, Python zu programmieren.
Senden Sie Google Mail am Ende des Vorgangs [Python]
Erster Python
Python bei Docker
Schleifen Sie gleichzeitig Variablen in der Vorlage
Drehen Sie in Python mehrere Listen mit for-Anweisung gleichzeitig
Entfernen Sie eine bestimmte Zeichenfolge am Ende von Python
Rufen Sie Polly aus dem AWS SDK für Python auf
Was ich zum ersten Mal in Python bekommen habe
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Führen Sie es vorerst mit CentOS7 + Apache2.4 + Python3.6 aus
[Python] Misst und zeigt die für die Verarbeitung erforderliche Zeit an
Geben Sie die Zeit ab dem Start des Programms in Python aus
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Visualisieren Sie Daten und erfassen Sie gleichzeitig die Korrelation
Diesmal habe ich Python I und II bei Progate gelernt.
Rufen Sie Ihr eigenes Python-Modul aus dem ROS-Paket auf
Aufgaben zu Beginn eines neuen Python-Projekts
Python: Zeitreihenanalyse
Finden Sie das maximale Python
Funktionsausführungszeit (Python)
Ich habe die gleiche Datenanalyse mit kaggle notebook (python) und PowerBI gleichzeitig versucht ②
der Zen von Python
So starten Sie den PC jeden Morgen zu einer festgelegten Zeit und führen das Python-Programm aus
Python-Zeitreihenfrage
Ich habe die gleiche Datenanalyse mit kaggle notebook (python) und PowerBI gleichzeitig versucht ①
Ausführungszeit für Python ausgeben
Timefloor-Funktion (Python)
[Python] Teilen Sie das Datum
Python Aktuelle Zeit abrufen
In Python integrierte Funktion ~ divmod ~ Lassen Sie uns gleichzeitig den Quotienten und den Rest der Division erhalten
Ich war 2 Minuten lang süchtig nach Python-Debugger-PDF
Versuchen Sie es mit dem Python-Webframework Django (2). Schauen Sie sich settings.py an
wxPython: Gleichzeitiges Zeichnen von Animationen und Grafiken
Verwendung der Methode __call__ in der Python-Klasse
Grep, damit grep zum Zeitpunkt von grep nicht angezeigt wird
Stellen Sie sich zum ersten Mal bei Qiita vor (Testbeitrag)
[Python] Zeigt die verstrichene Zeit in Stunden, Minuten und Sekunden an (00:00:00)
Holen Sie sich das aktuelle Datum und die aktuelle Uhrzeit in Python unter Berücksichtigung des Zeitunterschieds
Sehen Sie sich die in Python integrierte Ausnahmebaumstruktur an
Arbeiten Sie automatisch an dem Python-Projekt, das bei der Anmeldung bei zsh angegeben wurde
Reverse Pull Numpy / Pandas (wird jederzeit aktualisiert)