Ответ 1
Вы правильно устанавливаете точку останова. Я предполагаю, что это не останавливается, потому что строка кода, который вы нарушаете, не называется. Положите перерыв на строку 383.
Я пытаюсь отладить модуль "main", который вызывает функцию "broken_function" в строке 356 "another_module". У меня ошибка в этой функции, и я хочу поставить точку останова при ее запуске. Ниже приведен список. Я делаю что-то неправильно? Причина: точка останова не работает:
$ 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
...
Вы правильно устанавливаете точку останова. Я предполагаю, что это не останавливается, потому что строка кода, который вы нарушаете, не называется. Положите перерыв на строку 383.
Вы также можете установить точку останова непосредственно с помощью файла и номера строки, не импортируя ни sys
, ни 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
Обратите внимание, что /home/user/path/to/another/module/another_module.py
необходимо импортировать, а строка 383 нуждается в исполняемом файле и в пути выполнения для его разрыва, как отмечали другие.
Для получения дополнительной справки введите help b
(или, если на то пошло, help
, а затем любую другую команду), чтобы получить больше информации об этой команде.