Как мне изменить значение при отладке python с помощью pdb?

Я хочу запустить pdb, выполнить код и в какой-то момент изменить значение, на которое указывает какое-то имя. Поэтому я мог бы захотеть изменить значение, на которое указывает имя «stationLat». Но, похоже, не могу. Вот пример:

>>> import extractPercentiles
>>> import pdb
>>> pdb.run( "extractPercentiles.extractOneStation()" )
> <string>(1)<module>()->None
(Pdb) s
--Call--
> /scratch/extractPercentiles.py(96)extractOneStation()
-> def extractOneStation() :
(Pdb) tbreak 132
Breakpoint 3 at /scratch/extractPercentiles.py:132
(Pdb) c

Deleted breakpoint 3
> /scratch/extractPercentiles.py(132)extractOneStation()
-> stationLon = float(stationLoc[3])

Итак, теперь я нахожусь в том месте, где я хотел бы изменить значение stationlat. Pdb, похоже, позволяет мне установить для stationLat новое значение, но когда я проверяю значение, оно не изменилось:

(Pdb) stationLat
-34.171100000000003
(Pdb) stationLat = -40
(Pdb) stationLat   
-34.171100000000003
(Pdb) !stationLat = -40
(Pdb) stationLat
-34.171100000000003
(Pdb) 

Как видите, я пытался использовать! также безуспешно.

В руководстве по pdb сказано, что я должен иметь возможность изменять переменные:

Команды, которые отладчик не распознает, считаются операторами Python и выполняются в контексте отлаживаемой программы. Операторы Python также могут иметь префикс восклицательного знака (!). Это мощный способ проверить отлаживаемую программу; можно даже изменить переменную или вызвать функцию

Это вопрос объема? Это связано с тем, как я запустил pdb? Я попробовал встроенную идиому «pdb.set_trace» и получил тот же результат.

Спасибо за чтение.

14
задан Andrej Panjkov 18 December 2012 в 07:02
поделиться