49 votes

Comment définir un point d'arrêt dans un autre module (ne le définissez pas sur la ligne de définition de la fonction, si vous voulez vous arrêter lorsque la fonction commence à être exécutée).

J'essaie de déboguer un module "main", qui appelle une fonction "broken_function" à la ligne 356 de "another_module". J'ai une erreur dans cette fonction et je veux placer un point d'arrêt à son début. Voici le listing. Est-ce que je fais quelque chose de mal ? Parce que le point d'arrêt ne fonctionne pas :

$ 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
...

28voto

Riaz Rizvi Points 774

Vous définissez le point d'arrêt correctement. J'imagine qu'il ne s'arrête pas parce que la ligne de code sur laquelle vous faites la pause n'est pas appelée. Mettez la pause à la ligne 383.

19voto

user650654 Points 588

Vous pouvez également définir le point d'arrêt directement avec le fichier et le numéro de ligne, sans avoir à importer l'un ou l'autre des éléments suivants sys o another_module .

(Pdb) b /home/user/path/to/another/module/another_module.py:383
Breakpoint 1 at /home/user/path/to/another/module/another_module.py:383

Notez que /home/user/path/to/another/module/another_module.py doit être importé et la ligne 383 doit être exécutable et se trouver dans le chemin d'exécution pour qu'il y ait rupture, comme d'autres l'ont signalé.

Pour plus d'aide, tapez help b (ou d'ailleurs help suivie de toute autre commande) pour obtenir plus d'informations sur cette commande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X