Tôi muốn chạy pdb, bước qua mã, và tại một số điểm thay đổi giá trị được chỉ bởi một số tên. Vì vậy, tôi có thể muốn thay đổi giá trị được chỉ ra bởi tên 'stationLat'. Nhưng có vẻ như tôi không thể. Dưới đây là ví dụ:Làm cách nào để thay đổi giá trị trong khi gỡ lỗi python bằng pdb?
>>> 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])
Vì vậy, bây giờ tôi đang ở một nơi mà tôi muốn thay đổi giá trị của stationlat. Pdb xuất hiện để cho phép tôi đặt stationLat thành giá trị mới, nhưng khi tôi kiểm tra giá trị, nó không thay đổi:
(Pdb) stationLat
-34.171100000000003
(Pdb) stationLat = -40
(Pdb) stationLat
-34.171100000000003
(Pdb) !stationLat = -40
(Pdb) stationLat
-34.171100000000003
(Pdb)
Bạn có thể thấy tôi đã thử sử dụng! là tốt, không thành công.
Sổ tay pdb nói rằng tôi sẽ có thể thay đổi các biến:
Commands rằng debugger không nhận được giả định là báo cáo Python và được thực hiện trong bối cảnh của chương trình đang được gỡ rối. Các câu lệnh Python cũng có thể được đặt trước bằng một dấu chấm than (!). Đây là một cách mạnh mẽ để kiểm tra chương trình đang được sửa lỗi; thậm chí có thể thay đổi biến số hoặc gọi hàm
Đây có phải là câu hỏi về phạm vi không? Là nó để làm với cách tôi đã bắt đầu pdb? Tôi đã thử thành ngữ "pdb.set_trace" được nhúng và tôi nhận được kết quả tương tự.
Cảm ơn bạn đã đọc.
Ah! Được rồi cảm ơn. Tôi nghĩ có lẽ tôi phải tháo gỡ tên hoặc sử dụng một số không gian tên đặc biệt. Tôi đã cố gắng đi lên và xuống ngăn xếp khung quá. –
Ồ, tôi sẽ ghi lại rằng cho dự án này, tôi buộc phải làm việc trở lại trong python 2.5.2, mà vẫn còn có lỗi. –
cũng có một số biến nhất định mà bạn không thể gán. như "a" hoặc "b" – dtc