Почему pdb не останавливается на точках останова при использовании кода в символьных каталогах? - PullRequest
0 голосов
/ 26 сентября 2019

Я использую Python-3.7.3.У меня есть два файла:

tmp/add.py

def add(a,b):
    print("hello")
    return(a+b)

tmp/main.py

from add import add
a=9
b=10
c=add(a,b)

Если я запускаю

$ python -m pdb tmp/main.py
> /home/user/tmp/main.py(1)<module>()
-> from add import add
(Pdb) b add.py : 2
Breakpoint 1 at /home/user/tmp/add.py:2
(Pdb) c
> /home/user/tmp/add.py(2)add()
-> print("hello")
(Pdb)

pdbправильно останавливается на точке останова.Теперь, если я создаю символическую ссылку на каталог (ln -s tmp poo) и пытаюсь запустить pdb в каталоге с символьными ссылками:

$ python -m pdb poo/main.py
<function save_history at 0x2aaab21e1f28>
> /home/user/poo/main.py(1)<module>()
-> from add import add
(Pdb) b add.py : 2
Breakpoint 1 at /home/user/tmp/add.py:2
(Pdb) c
hello
The program finished and will be restarted

Ясно, что pdb не удалось остановить на точке останова, и возникают проблемыс символическими ссылками.

Вопрос

Есть ли способ обойти эту проблему, или я просто застрял, переходя в каталог, где мой код живет и работает pdb там?

1 Ответ

0 голосов
/ 26 сентября 2019

Кажется, что решение этой проблемы - ввести полный путь к файлу.

т.е.

from add import add
(Pdb) b /home/user/poo/add.py : 2
Breakpoint 1 at /home/user/poo/add.py:2
(Pdb) c
> /home/user/poo/add.py(2)add()
-> print("hello")
(Pdb)

Это все еще немного вонючее, так как требует больше нажатий клавиш.

...