Список отображения Python3 PDB
display
Команда pdb, кажется, показывает только выражение, когда вся переменная назначена.
pass
foo = [1, 2, 3]
foo[0] = 8
foo.append(7)
pass
Вывод, который я получаю при запуске вышеуказанного кода с python3 -m pdb bar.py
а затем войти display foo
является:
> bar.py(2)<module>()
-> foo = [1, 2, 3]
(Pdb) display foo
display foo: ** raised NameError: name 'foo' is not defined **
(Pdb) n
> bar.py(3)<module>()
-> foo[0] = 8
display foo: [1, 2, 3] [old: ** raised NameError: name 'foo' is not defined **]
(Pdb)
> bar.py(4)<module>()
-> foo.append(7)
(Pdb)
> bar.py(5)<module>()
-> pass
(Pdb) foo
[8, 2, 3, 7]
(Pdb)
Ожидается NameError и первый вывод отображения. Однако кажется, что дисплей не улавливает, что foo
изменилось, когда был изменен его первый элемент или когда мы добавили 7.
Есть ли способ указать pdb перечислить эти изменения? Кажется, что display str(foo)
делает работу, но мне интересно, если есть лучшее решение.
1 ответ
Да, способ отслеживать эти изменения для вас 'p'
команда вместо Смотрите этот пример
> /home/maksim/Projects/Python/basic/test.py(2)<module>()
-> foo = [1, 2, 3]
(Pdb) s;;l;;p foo
> /home/maksim/Projects/Python/basic/test.py(3)<module>()
-> foo[0] = 8
1 pass
2 foo = [1, 2, 3]
3 -> foo[0] = 8
4 foo.append(7)
5 pass
6
7
8
[EOF]
[1, 2, 3]
(Pdb) s;;l;;p foo
> /home/maksim/Projects/Python/basic/test.py(4)<module>()
-> foo.append(7)
1 pass
2 foo = [1, 2, 3]
3 foo[0] = 8
4 -> foo.append(7)
5 pass
6
7
8
[EOF]
[8, 2, 3]
(Pdb) s;;l;;p foo
> /home/maksim/Projects/Python/basic/test.py(5)<module>()
-> pass
1 pass
2 foo = [1, 2, 3]
3 foo[0] = 8
4 foo.append(7)
5 -> pass
6
7
8
[EOF]
[8, 2, 3, 7]
(Pdb) s;;l;;p foo
--Return--
> /home/maksim/Projects/Python/basic/test.py(5)<module>()->None
-> pass
1 pass
2 foo = [1, 2, 3]
3 foo[0] = 8
4 foo.append(7)
5 -> pass
6
7
8
[EOF]
[8, 2, 3, 7]
(Pdb)