如何在Python 2.6的pdb中修改本地文件?

时间:2014-10-10 16:54:56

标签: python-2.6 pdb

如何在pdbipdb中修改局部变量?这些调试器有效地忽略对现有本地绑定的更改,例如,这是使用ipython的一个例子。

In [3]: def foo():
   ...:     bar = 123
   ...:     import ipdb; ipdb.set_trace()
   ...:     print bar
   ...:

In [4]: foo()
> <ipython-input-3-ee9873383395>(4)foo()
      3     import ipdb; ipdb.set_trace()
----> 4     print bar
      5

ipdb> del bar               # effect is limited too the current line
ipdb> bar                   # bar is still bound to the old value
123
ipdb> del bar; print bar    # shows it worked within the line
<function bar at 0x2b7e488>
ipdb> print bar             # but the effect goes away on the next debugger line
123
ipdb> c                     # confirmation that the binding wasn't changed
123

请注意,直接修改locals()也无效。

如果重要,我使用的是Python 2.6。

背景:我试图调试一些析构函数问题,并希望更明确地控制何时删除每个本地以跟踪我的错误。

编辑:给出了一个完整的独立示例。

编辑2 :这在Python 2.7中至少已部分修复。任何Python 2.6的解决方案仍然会受到赞赏。

0 个答案:

没有答案