繁体   English   中英

如何在使用pdb调试python时更改值?

[英]How do I change a value while debugging python with 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”习惯用法,我得到了相同的结果。

谢谢阅读。

这似乎是Python 2.6中的一个错误 您应该能够在Python 2.7中执行此操作。

实际上,在pdb中分配新值时,变量的值会发生变化。 但是,如果您尝试在不运行代码的情况下再次读取pdb中的变量,它可能会重置为原始值。

如果您退回到代码中,您应该会看到它将使用您的新值(-40)。

尝试这个:

stationLat = -40
s # step back into code
stationLat # should display -40

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM