Was nötig ist, um den Gebrauch von gdb 7 ist die Unterstützung für das Debuggen von Python-Programmen?
Ich würde gerne verwenden Sie gdb, 7 ist die Unterstützung für debugging Python "minderwertig verarbeitet".
Was brauche ich, um in der Lage sein, das zu tun?
Beispiel:
-
Was Fahnen hat die schlechter als Python-Skript konfigurieren müssen, wurden ausgeführt mit?
-
Funktioniert das schlechter als Python-Prozess zu Python 2.7 oder höher (ich sehe, das ist, wenn der Teil des gdb-Unterstützung, die in Python-source-tree begangen wurde)? Oder ist Python 2.7 nur vom gdb-Prozess selbst?
-
Welche Dateien müssen installiert wurden, dass kann nicht verpackt werden, die von allen Distributionen? Zum Beispiel, auf packages.ubuntu.com ich bekomme keine hits für python-gdb.py, die ich glaube, ist notwendig.
Wäre es sehr praktisch zu wissen, was nötig ist, auf bestimmte Distributionen. Ich bin besonders daran interessiert, was benötigt wird für Ubuntu und Centos.
- Sind Sie sicher, dass Sie die Interpretation dieser Funktion richtig? GDB 7 Hinzugefügt Unterstützung für die Erweiterung der GDB selbst in python, aber ich bin mir nicht bewusst, in der Lage, es zu benutzen, um debug-ein python-Programm (außerhalb von debugging der interpreter selbst, der ist). Das ist es, was pdb ist für, dachte ich.
- Ja, ziemlich sicher. Streng, meine Frage ist über die Python-Funktion, die verwendet die Funktion die in der gdb, um features für das debugging Python-Programme (oder Python selbst): wiki.python.org/moin/DebuggingWithGdb -- gibt es z.B. py-bis-und py-down-Befehle, um sich durch die Python-stack, eine py-bt-Befehl zum drucken der Python-stack und einer py-Befehl "drucken" drucken Sie den Wert an eine Python Namen. Scheint besonders nützlich für die Probleme, die cross-over C / Python Grenze, aber ich bin daran interessiert, es zu versuchen, auch für die Fehlersuche Reine Python-Probleme, die auftreten, in der Produktion, der Verwendung von core-dumps.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python scheint zu müssen, um kompiliert wurden
--with-pydebug
(auf Ubuntu 12.04, Paketpython-dbg
enthält ein passendes Python-executable, selbst genanntpython-dbg
). Die schlechter als Python nicht brauchen, um Python 2.7 -- 2.6 Lasten der 2,7 gdb-Erweiterungen erfolgreich (siehe die debugging-Sitzung unten). Zumindest auf Ubuntu 12.04, die Datei, die installiert wird definiert, dass die gdb-Erweiterungen genannt wirdlibpython.py
, nichtpython-gdb.py
(für einige Grund -, Gebäude-Python liefert eine build-Verzeichnis enthält sowohl die Dateien -- Sie sind identisch).Aber ich glaube nicht, dass es derzeit möglich, Debuggen mit der Produktion von core-Dateien: wie es aussieht ist die gdb-Erweiterungen für Python unterlegen Prozesse versuchen, Variablen, die optimiert werden, entfernt in einer Produktion mit binären (zum Beispiel, die f-variable in
PyEval_EvalFrameEx
). Es scheint, daß Linux /gdb und Python hat noch nicht das Niveau der awesomeness erreicht für JavaScript auf Illumos Kernel Entwicklung: die Bryan Cantrill Berichte hier in der Lage ist zu debug-Produktion-core-dumps in dieser Weise:http://www.infoq.com/presentations/Debugging-Production-Systems
Hier ist die debug-Sitzung auf Ubuntu 12.04 zeigt, gdb ausführen eines Python 2.6 schlechter als Prozess zu Debuggen ein segfault, mit Python 2.7 die gdb-Erweiterungen. Zuerst der code, um die Ursache segfault:
und die debugging-Sitzung:
Für Centos 6, müssen Sie einfach tun:
Können Sie dann Debuggen, ausführen von python-Prozesse, indem Sie einfach anbringen, um Sie mit gdb:
Sobald die Verbindung hergestellt, Tippen Sie einfach: