Emacs: Methoden zum Debuggen von Python

9

Ich benutze Emacs für alle meine Code-Edit Bedürfnisse. Normalerweise verwende ich Mx kompilieren, um meinen Testläufer zu laufen, was ich ungefähr 70% von dem tun würde, was ich tun muss, um den Code in der Spur zu behalten, aber in letzter Zeit habe ich mich gefragt, wie es möglich ist, Mx pdb zu verwenden Gelegenheiten, bei denen es schön wäre, einen Haltepunkt zu treffen und Dinge zu inspizieren.

In meinem Google-Suche habe ich einige Dinge gefunden, die vorschlagen das ist nützlich / möglich. Jedoch habe ich es nicht geschafft, dass es auf eine Art funktioniert, die ich vollständig verstehe.

Ich weiß nicht, ob es die Kombination aus Build + Appengine ist, die es schwieriger macht, aber wenn ich versuche, etwas wie

zu tun %Vor%

Wo ... / bin / python ist der Interpreter-Buildout mit dem Pfad für alle Eier.

~ / bin / pdb ist ein einfaches Skript, das mit dem aktuellen Python-Interpreter

in pdb.main aufruft %Vor%

... / bin / devappserver ist das Skript dev_appserver, das das Erstellungsrezept für gae project erstellt, und ... / parts / hydrant-app ist der Pfad zur app.yaml

Ich werde zuerst mit einer Eingabeaufforderung

vorgestellt %Vor%

Nichts passiert außer

%Vor%

etwas passiert

%Vor%

meldet, dass ein Haltepunkt gesetzt wurde. Aber ich kann es nicht schaffen, die Dinge in Gang zu bringen.

Es fühlt sich an, als ob ich hier etwas Offensichtliches verpasse. Bin ich?

Lohnt sich interaktives Debugging in Emacs? ist das interaktive Debugging einer Google Appengine App möglich? Irgendwelche Vorschläge, wie ich das funktionieren lassen könnte?

    
Tom Willis 24.12.2010, 18:16
quelle

1 Antwort

4

Hmm. Du machst das ein bisschen anders als ich. Ich habe nicht mit deiner Methode experimentiert. Ich benutze das pdb-Bibliotheksmodul direkt, ohne Wrapper-Skript, benutze einfach die Python-Befehlszeilenoption "-m", um python anzuweisen, das Modul als Skript auszuführen.

Um zu gründlich zu sein, hier ist meine Abfolge von Operationen:

  1. Ich drücke Alt-X in EMACS, gebe "pdb" ein und kehre dann zurück.
  2. EMACS fordert mich auf mit "run pdb (so):" und gebe "python -m pdb myprogram.py" ein.
  3. EMACS erstellt ein Debugger-Modus-Fenster für pdb, wo ich die Debugger-Befehle geben und die Ausführung des Programms im Quellcode verfolgen kann.

Ich nehme an, es ist möglich, dass es aus irgendeinem Grund nicht gut mit dem Appengine funktioniert. Ich empfehle, dass es zuerst mit einem trivialen Python-Programm funktioniert und sobald Sie wissen, dass es funktioniert, versuchen Sie, die volle App zu verwenden.

In der Praxis mache ich nicht viel Python-Debugging mit pdb. Der Großteil meines Debugging ist im Wesentlichen "printf debugging", das Einfügen von Druckanweisungen in meine Komponententests und (gelegentlich) in den eigentlichen Code.

    
divegeek 31.12.2010 01:26
quelle

Tags und Links