2012-11-27 5 views
23

Ich versuche ein Modul "main" zu debuggen, das eine Funktion "defekte_funktion" aufruft "in Zeile 356 von" another_module ". Ich habe einen Fehler in dieser Funktion und möchte am Anfang einen Haltepunkt setzen. Unten ist die Auflistung. Mache ich etwas falsch? Ursache, der Haltepunkt funktioniert nicht:Wie setze ich den Haltepunkt in einem anderen Modul (setze ihn nicht auf Funktionsdefinitionszeile, wenn du brechen willst wenn die Funktion gestartet wird)

$ python -m pdb main 
(Pdb) import sys 
(Pdb) sys.path.append("/home/user/path/to/another/module") 
(Pdb) import another_module 
(Pdb) b another_module:356 
Breakpoint 1 at /home/user/path/to/another/module/another_module.py:356 
(Pdb) c 
Traceback (most recent call last): 
... 
File "/home/user/path/to/another/module/another_module.py", line 383, in broken_function 
f=open("../jobs/temptree.tre", "r") 
IOError: [Errno 2] No such file or directory: '../jobs/temptree.tre' 
Uncaught exception. Entering post mortem debugging 
... 

Antwort

13

Sie legen den Haltepunkt korrekt fest. Ich stelle mir vor, dass es nicht aufhört, weil die Codezeile, an der Sie gerade arbeiten, nicht aufgerufen wird. Setzen Sie die Pause auf Linie 383.

+0

BTW, können Sie auch einen harten Haltepunkt versuchen, um sicherzustellen, dass. In Zeile 383 einfügen "Import pdb; pdb.set_trace()" –

+0

Guter Punkt, danke! Werde es jetzt versuchen. –

+0

Dein Ratschlag funktioniert perfekt, aber das Verhalten von pdb ist mir seltsam. Die Zeile 356 ist die erste Zeile der Funktion "def broken_function():". Wenn ich den Haltepunkt in die nächste Zeile setze, wo der Kommentar steht, sagt pdb "*** Leer oder Kommentar", was bedeutet, dass die Nummerierung der Zeilen nicht unterbrochen ist. Haltepunkte innerhalb der Funktion funktionieren ordnungsgemäß. Seltsam ... Danke für deine Lösung! –

Verwandte Themen