当我尝试使用 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 也被变量所掩盖)。
到目前为止我尝试了什么:
- 使用 ipdb3 而不是 ipdb - 同样的问题(可能是因为在我的情况下 ipdb 链接到 ipdb3 :))
- 使用 pdb - 它有效!n/next 命令移至下一行,而不是显示 python 变量。我的ipdb怎么了?
!!n
缓解了这个问题 - 它运行 ipdb 版本的next
. 如果我可以alias n !!n
然后重复使用Enter
它来执行它,那么问题就会为我解决。但Enter
只显示变量n
而不是运行别名n
(应该解析为!!n
)
我在用着
- Manjaro Linux 16.10
- Python 3.5.2 :: Anaconda 4.2.0(64 位)
- ipdb (0.10.1)
- ipython (5.1.0)
- ipython-genutils (0.1.0)
- 我没有 ~/.pdbrc 文件