2016-05-11 28 views
0

Ich versuche, ein Python-Skript für einen Code zu durchlaufen, den ich vor über einem Jahr geschrieben habe. So wie ich mich erinnere, wenn Sie eine pdb.set_trace() Zeile schreiben, wird das Programm die Ausführung an diesem Punkt anhalten und die nächste Zeile ausgeben, die ausgeführt wird. Wenn Sie 'n' oder 's' eingeben, wird die Ausführung um eine Zeile erweitert (und möglicherweise in eine Funktion, die für mein Problem nicht zu relevant ist). UND die nächste Zeile ausdruckt, die erneut ausgeführt werden soll.Python PDB Inkonsistenz mit Befehlsausgaben - nächste Anweisung wird nicht ausgegeben

Jetzt habe ich ein Programm "example1.py" und es druckt nicht die nächste Anweisung ausgeführt werden. Ich bekomme nur eine Ausgabe wie die folgenden

./example1.py 
> /home/some/example1.py(44)create() 
(Pdb) s 
> /home/some/example1.py(45)create() 
(Pdb) s 
--Call-- 
> /home/some/example1.py(90)parse() 

Aber wenn ich diese gleiche Sache mit einem anderen Python-Programm versuchen, „example2.py“, eine, die ich in letzter Zeit schrieb ich erhalte den Ausgang I (die nächsten erwarten Anweisung ausgeführt werden.)

> /home/some/example2.py(86)random_update() 
-> DATE_LIMIT=1 
(Pdb) n 
> /home/some/example2.py(87)random_update() 
-> FILE_LIMIT=120 
(Pdb) n 
> /home/some/example2.py(89)random_update() 
-> n_dates=0 

Ich habe keine Ahnung, was eine mögliche Ursache dafür sein könnte. Könnte das Importieren von Anweisungen die Ausführung von pdb beeinträchtigen?

UPDATE: Also habe ich meine Trace Breakpoint vor dem Wechsel in ein Verzeichnis, das außerhalb meines Home-Verzeichnisses ist. Wenn ich das mache, bekomme ich die Ausgabe, die ich erwarte. Ich bemerkte, dass der Gruppenbesitzer dieses Verzeichnisses root war, also änderte ich es zu meinem Benutzer. Das hat mein Problem nicht gelöst, aber jetzt weiß ich, dass es mit dem Speicherort der Programmausführung zu tun hat.

Antwort

1

Ich habe es herausgefunden. Wenn ich meine Ablaufverfolgung vor einer Zeile einstelle, die das aktuelle Verzeichnis in ein Verzeichnis ändert, in dem sich das Programm nicht befindet, erhielt ich die erwartete Ausgabe. Sobald ich die Ablaufverfolgung nach dieser Verzeichnisänderung gesetzt habe, erhielt ich keine Ausgabe der Anweisungsausführung mehr.

Um dies zu beheben, ausgeführt ich das Programm mit einem vollständigen Pfad

python /home/name/home/some/example1.py