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.
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