我想運行pdb,逐步執行代碼,並在某些時候更改某個名稱指向的值。所以我可能想改變'stationLat'這個名字所指的值。但似乎我不能。這裏的例子:如何在使用pdb調試python時更改值?
>>> 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.5.2中工作,這仍然存在bug。 –
也有一些你不能指定的變量。如「a」或「b」 – dtc