Запустите ваш скрипт следующим образом:
python -m pdb myscript.py
Консоль покажет вам:
> /home/user/dir/myscript.py(2)<module>()
-> first_line (of_my_script)
(PDB)
Тип продолжить
Подождите, пока что-нибудь взорвется:
TypeError: invalid type comparison
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> /home/user/problemscript.py(567)na_op()
-> raise TypeError("invalid type comparison")
(Pdb)
С этого момента вы, в основном, находитесь в MUD и применяется удивительное количество стандартных команд.
Введите , где или w , чтобы увидеть, где вы находитесь в стеке:
(Pdb) w
-> return df[df['type']=='dev'][['Dist','Count']].as_matrix()
/home/user/core/ops.py(603)wrapper()
-> res = na_op(values, other)
> /home/user/core/ops.py(567)na_op()
-> raise TypeError("invalid type comparison")
Видите эту маленькую >
стрелу? Вот где мы в стеке.
Используйте список или l , чтобы осмотреться:
(Pdb) list
564 try:
565 result = getattr(x, name)(y)
566 if result is NotImplemented:
567 >> raise TypeError("invalid type comparison")
568 except (AttributeError):
569 -> result = op(x, y)
570
571 return result
572
573 def wrapper(self, other):
574 if isinstance(other, pd.Series):
Для перемещения по стеку продолжайте MUDing и используйте вверх ( u ) или вниз ( d ).
Используйте args ( a ), чтобы проверить, с какими аргументами была вызвана текущая функция:
(Pdb) args
dat = array([], shape=(0, 3), dtype=float64)
dev_classes = {81, 82, 21, 22, 23, 24, 31}
Используйте p , чтобы распечатать содержимое переменной (или pp , чтобы красиво напечатать (или обработать основные потребности вашего персонажа)):
(Pdb) p df
Empty DataFrame
Columns: [Dist, type, Count]
Index: []
Используйте взаимодействовать , чтобы ввести код в текущей точке стека. Ctrl + D возвращает вас обратно в PDB.
Вперед! Потребуется много смелых и могучих искателей приключений, чтобы повернуть назад собравшиеся орды гоблинов, которые теперь окружают город. Сможете ли вы победить Короля гоблинов и вернуть землю для рас?