Отладка

В интерпретаторе языка Python заложены возможности отладки программ, а в стандартной поставке имеется простейший отладчик — pdb. Следующий пример показывает программу, которая подвергается отладке, и типичную сессию отладки:

# File myfun.py

def fun(s):

 lst = []

 for i in s:

  lst.append(ord(i))

 return lst

Так может выглядеть типичный процесс отладки:

>>> import pdb, myfun

>>> pdb.runcall(myfun.fun, «ABCDE»)

> /examples/myfun.py(4)fun()

-> lst = []

(Pdb) n

> /examples/myfun.py(5)fun()

-> for i in s:

(Pdb) n

> /examples/myfun.py(6)fun()

-> lst.append(ord(i))

(Pdb) l

1   #!/usr/bin/python

2   # File myfun.py

3   def fun(s):

4    lst = []

5    for i in s:

6 ->  lst.append(ord(i))

7    return lst

[EOF]

(Pdb) p lst

[]

(Pdb) p vars()

{'i': 'A', 's': 'ABCDE', 'lst': []}

(Pdb) n

> /examples/myfun.py(5)fun()

-> for i in s:

(Pdb) p vars()

{'i': 'A', 's': 'ABCDE', 'lst': [65]}

(Pdb) n

> /examples/myfun.py(6)fun()

-> lst.append(ord(i))

(Pdb) n

> /examples/myfun.py(5)fun()

-> for i in s:

(Pdb) p vars()

{'i': 'B', 's': 'ABCDE', 'lst': [65, 66]}

(Pdb) r

- Return -

> /examples/myfun.py(7)fun() — >[65, 66, 67, 68, 69]

-> return lst

(Pdb) n

[65, 66, 67, 68, 69]

>>>

Интерактивный отладчик вызывается функцией pdb.runcall() и на его приглашение (Pdb) следует вводить команды. В данном примере сессии отладки были использованы некоторые из следующих команд: l (печать фрагмент трассируемого кода), n (выполнить все до следующей строки), s (сделать следующий шаг, возможно, углубившись в вызов метода или функции), p (печать значения), r (выполнить все до возврата из текущей функции).

Разумеется, некоторые интерактивные оболочки разработчика для Python предоставляют функции отладчика. Кроме того, отладку достаточно легко организовать, поставив в ключевых местах программы, операторы print для вывода интересующих параметров. Обычно этого достаточно, чтобы локализовать проблему. В CGI–сценариях можно использовать модуль cgitb, о котором говорилось в одной из предыдущих лекций.

Лето — время эзотерики и психологии! ☀️

Получи книгу в подарок из специальной подборки по эзотерике и психологии. И скидку 20% на все книги Литрес

ПОЛУЧИТЬ СКИДКУ