J'essaie de déboguer un module "principal", qui appelle une fonction "broken_function" à la ligne 356 de "another_module". J'ai une erreur dans cette fonction et je veux mettre un point d'arrêt à son début. Ci-dessous la liste. 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
...
Vous définissez correctement le point d'arrêt. J'imagine que cela ne s'arrête pas car la ligne de code sur laquelle vous vous brisez n'est pas appelée. Mettez la pause sur la ligne 383.
Vous pouvez également définir le point d'arrêt directement avec le numéro de fichier et de ligne, sans avoir à importer sys
ou 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 dans le chemin d'exécution pour qu'elle se casse, comme d'autres l'ont souligné.
Pour plus d'aide, tapez help b
(ou d'ailleurs help
suivi de toute autre commande) pour obtenir plus d'informations sur cette commande.