Подтвердить что ты не робот

Как установить точку останова в другом модуле (не устанавливайте ее в строке определения функции, если вы хотите разбить, когда функция запускается)

Я пытаюсь отладить модуль "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
...
4b9b3361

Ответ 1

Вы правильно устанавливаете точку останова. Я предполагаю, что это не останавливается, потому что строка кода, который вы нарушаете, не называется. Положите перерыв на строку 383.

Ответ 2

Вы также можете установить точку останова непосредственно с помощью файла и номера строки, не импортируя ни 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, а затем любую другую команду), чтобы получить больше информации об этой команде.