2013-04-22 13 views
6

Ich verwende Python mit kompilierten Cython und Fortran-Erweiterungen (umwickelt mit modernen Fortran iso_c_binding-Modul und Cython) für die Zahlenverarbeitung.Python mit kompilierten Erweiterungen debuggen

Bisher habe ich keine bequeme Debugging-Strategie. Ich verwende pudb für den Python-Teil. Obwohl ich in der Lage sein könnte, gdb auf den Fortran-Teilen des Projekts Cython & zu verwenden, finde ich mich stattdessen Konsole Textausgabe (print()!) verwenden.

Ich würde gerne wissen, ob es Werkzeuge gibt, die die verschiedenen Ebenen des Codes für das Debuggen transparent machen, dh ich suche nach einer "Ein-Tool-Debug-It-All" -Lösung, die egal ist, ob es schreitet Python-, Cython- oder Fortran-Code.

Ich würde lieber Werkzeuge, die benutzerfreundliche Interaktion ermöglichen, wie die oben genannten Pudb. Gibt es ein solches Alleskönner-Debugging-Tool? Ist das Python mode of GDB das Beste, was ich bekommen kann?

+1

Leider habe ich keine Lösung für Sie, aber ich GDB verwenden für genau was du beschreibst. Ich suchte auch nach einer besseren Lösung ohne Glück. – thebigdog

Antwort

5

Sie können die Cython debugger verwenden, die gdb mit neuen Befehlen erweitert, die cy beginnen. Diese erlauben es Ihnen, Cython-Code zu durchlaufen, Breakpoints zu setzen, Locals zu überprüfen usw. und funktionieren immer noch genauso wie die py Befehle aus dem GDB Python-Modus, wenn Sie sich in einem Python-Frame befinden. Leider gibt es keinen Fortran-Support.

+0

Das ist ein guter Tipp für den Start! Gibt es grafische Frontends, die mit 'cygdb' arbeiten? Ich konnte keine finden. Außerdem finde ich es seltsam, 'cygdb' im Build-Verzeichnis auszuführen. – AlexE

+1

Sie könnten 'ddd --pydb --debugger cygdb' oder' ddd --gdb --debugger cygdb' versuchen, 'ddd' zu bekommen, um' cygdb' auszuführen und so zu tun, als wäre es 'gdb' oder' pydb'. Nicht sicher, wie viel Funktionalität Sie bekommen. – r3m0t

+0

Ich bin nicht vertraut mit 'ddd', aber mindestens die Grundlagen funktionieren anscheinend (solange ich nicht in Systemfunktionen gehe). Ich bekomme dieselbe Visualisierung, indem ich auf Variablen klicke, so dass der Befehlszeile ein Mehrwert hinzugefügt wird. Offenbar, solange die Fortran-Routinen mit Debugging-Symbolen kompiliert werden, ist auch der Schritt in Fortran-Code möglich! So jetzt muss ich nur mit 'ddd' vertraut werden. Vielen Dank! – AlexE