Опубликован: 22.12.2005 | Уровень: для всех | Доступ: платный
Лекция 14:

Устройство интерпретатора языка Python

< Лекция 13 || Лекция 14: 12345678

Отладка

В интерпретаторе языка 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, о котором говорилось в одной из предыдущих лекций.

< Лекция 13 || Лекция 14: 12345678
Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Павел Ялганов
Павел Ялганов

Скажите экзамен тоже будет ввиде теста? или там будет какое то практическое интересное задание?

Мария Кравцова
Мария Кравцова
Россия, Сочи, РГПУ им. А.И.Герцена, 1997
Екатерина Архангельская
Екатерина Архангельская
Россия, СПбГУАП