我想运行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”习惯用法,但得到了相同的结果。
谢谢阅读。
!
,则可以将它们分配。请注意,本次翻译不包含解释或其他内容。 - Michael Hoffman(Pdb) w
来检查代码行,然后再次检查该值,则会看到旧值。这是一个巨大的“pdb”错误!最好不要修改值! - Apostolos