Код: Выделить всё
import pdb
def buggy_function(x):
result = 0
for i in range(x):
result += i / (i - 4)
return result
# Use pdb.run() to debug
pdb.run("buggy_function(10)")
[*]Когда вы запускаете код, отладчик запускается перед выполнением buggy_function(10)
[*]В командной строке (Pdb) вам нужно использовать n для входа в функцию buggy_function.
Пример вывода сеанса для блога был таким: ниже:
Код: Выделить всё
> (1)()
(Pdb) n
> (1)()
(Pdb) s
> (1)buggy_function()
(Pdb) p x
10
(Pdb) n
> (3)buggy_function()
(Pdb) p i
4
(Pdb) p result
6.0
(Pdb) c
ZeroDivisionError: division by zero
Код: Выделить всё
(codeexec) PS C:\codeexec> python .\main.py
> (1)()
(Pdb) n
ZeroDivisionError: division by zero
> (1)()
(Pdb)
Однако, если я начну с s< /code>, тогда элемент управления правильно войдет в метод
Код: Выделить всё
(codeexec) PS C:\codeexec> python .\main.py
> (1)()
(Pdb) s
--Call--
> c:\codeexec\main.py(3)buggy_function()
-> def buggy_function(x):
(Pdb) n
> c:\codeexec\main.py(4)buggy_function()
-> result = 0
(Pdb) n
> c:\codeexec\main.py(5)buggy_function()
-> for i in range(x):
(Pdb) n
> c:\codeexec\main.py(6)buggy_function()
-> result += i / (i - 4)
(Pdb) p i
0
(Pdb)
Подробнее здесь: https://stackoverflow.com/questions/792 ... bugger-pdb
Мобильная версия