被变量遮盖的 ipdb 命令

ipdb commands obscured by variables

当我尝试使用 ipdb 调试此示例脚本时:

n = 1
next = 1
print('end')

我无法执行第 3 行,因为 python 变量模糊了 pdb 命令:

$ ipdb test.py
> /tmp/test.py(1)<module>()
----> 1 n = 1
      2 next = 1
      3 print('end')

ipdb> next
> /tmp/test.py(2)<module>()
      1 n = 1
----> 2 next = 1
      3 print('end')

ipdb> next
> /tmp/test.py(3)<module>()
      1 n = 1
      2 next = 1
----> 3 print('end')

ipdb> next
1
ipdb> n
1
ipdb> !n
1
ipdb> !next
1

当两个命令 (n/next) 都无法再被识别时,我如何才能进一步执行我的代码? (假设 s/step 也被变量遮盖了)。

到目前为止我尝试了什么:

我正在使用

编辑

问题已由以下人员修复:https://github.com/ipython/ipython/pull/10050

2016/12/14更新:

最终 iPython 团队决定 revoke this design


您的问题的解决方案是使用 !! 语句强制执行标准行为。

> /home/v-zit/test.py(1)<module>()
----> 1 n = 1
      2 next = 11
      3 print('end')

ipdb> n
> /home/v-zit/test.py(2)<module>()
      1 n = 1
----> 2 next = 11
      3 print('end')

ipdb> n
1
ipdb> !!n
> /home/v-zit/test.py(3)<module>()
      1 n = 1
      2 next = 11
----> 3 print('end')

ipdb> next
11
ipdb> !!next
end
--Return--
None
> /home/v-zit/test.py(3)<module>()
      1 n = 1
      2 next = 11
----> 3 print('end')

ipdb>

参考:

https://github.com/ipython/ipython/pull/9449

https://github.com/ipython/ipython/pull/10050