(Pdb) s
> /Users/williamlubanovic/book/capitals.py(2)process_cities()
-> with open(filename, 'rt') as file:
Введите l (list — «перечислить»), чтобы увидеть следующие несколько строк
своей программы
(Pdb) l
1 def process_cities(filename):
2 -> with open(filename, 'rt') as file:
3 for line in file:
4 line = line.strip()
5 if 'quit' in line.lower():
6 return
7 country, city = line.split(',')
8 city = city.strip()
9 country = country.strip()
10 print(city.title(), country.title(), sep=',')
11
(Pdb)
Стрелка (->) указывает на текущую строку.
Мы могли бы и дальше применять команды s или n в надежде что-то найти, но
давайте использовать одну из главных особенностей отладчика — точки останова.
Точка останова останавливает выполнение программы на указанной вами строке.
В данном случае мы хотим узнать, почему функция process_cities() вызывает за-
вершение программы до прочтения всех введенных строк. Строка 3 (for line in
file:) будет считывать каждую строку входного файла, поэтому она выглядит не-
винно. Единственное место, где мы можем вернуться из функции до прочтения
всех данных, — это строка 6 (return). Поставим точку останова на строке 6:
(Pdb) b 6
Breakpoint 1 at /Users/williamlubanovic/book/capitals.py:6
Далее продолжим выполнение программы до тех пор, пока она либо не достиг-
нет точки останова, либо не завершится обычным образом:
(Pdb) c
Buenos Aires,Argentina
La Paz,Bolivia
Brasilia,Brazil
Santiago,Chile
Отлаживаем с помощью pdb
367
Bogotá,Colombia
> /Users/williamlubanovic/book/capitals.py(6)process_cities()
-> return
Ага, она остановилась на точке останова в строке 6. Это показывает, что про-
грамма хочет завершиться после прочтения страны, которая идет вслед за Колум-
бией. Выведем значение переменной line, чтобы увидеть, что мы только что счи-
тали:
(Pdb) p line
'ecuador,quito'
Что такого особенного… а, забудьте.
Серьезно? Столица называется *quit*o? Наш менеджер не ожидал, что строка