Я пытаюсь отлаживать код python с помощью pdb. У меня есть переменная, которая называется c, и когда я нажимаю c для печати этой переменной, pdb путается и продолжает отладку до следующей точки останова. Как я могу избежать такой путаницы, учитывая, что было бы очень сложно изменить имя переменной.Отладка Python с использованием pdb
ответ
Ваша путаница в том, что делают различные команды в PDB. Я думаю о нем немного как MUD и работает довольно часто:
Использование р распечатать содержимое переменной (или п.п. к довольно-печати (или обрабатывать основные потребности вашего персонажа)):
(Pdb) p df
Empty DataFrame
Columns: [Dist, type, Count]
Index: []
Тип где или ж, чтобы увидеть, где вы находитесь в стеке:
(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")
Знаете ли вы, что мало >
стрелка? Вот где мы находимся в стеке.
Используйте список или л озираться:
(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 и использовать до (у) или вниз (d) ,
Использование арг () рассмотреть, какие аргументы текущей функции была вызвана:
(Pdb) args
dat = array([], shape=(0, 3), dtype=float64)
dev_classes = {81, 82, 21, 22, 23, 24, 31}
Использование взаимодействуют ввести код в текущий момент в стеке. Ctrl + D возвращает вас в PDB.
Вы можете сказать, PDB не оценивать вещи, как, что с помощью !
префикс:
>>> !c
... <value of c>
Очень полезно для команд присваивания таким именам: '(Pdb)! C = something' – hynekcer
Для печати переменной, используйте p
p c
будет выводить значение переменной c
например:
>>> import pdb
>>> c = [1,2,3]
>>> pdb.set_trace()
--Return--
> <stdin>(1)<module>()->None
(Pdb) p c
[1, 2, 3]
См. Также:' print', 'pp',' pprint' – Glycan
Возможно, существует дубликат этого вопроса – Glycan