如何在Python调试器(PDB)中执行多行语句
我在运行一个Python脚本,里面调用了Python的调试器PDB,方法是这样写的:
import ipdb; ipdb.set_trace()
(这是iPython版本的PDB,不过我觉得这没什么区别;我用它只是为了能看到彩色的输出)。
现在,当我进入调试器时,我想执行一些多行的语句,比如if语句或者for循环,但一输入
if condition:
然后按回车键,就会出现错误信息 *** SyntaxError: invalid syntax (<stdin>, line 1)
那么,在PDB中怎么才能执行多行语句呢?如果不行,有没有其他方法可以执行if语句或者for循环呢?
6 个回答
60
我建议使用IPython嵌入。
ipdb> from IPython import embed; embed()
325
你可以在使用pdb的时候,启动一个临时的互动Python会话,这样你就能使用所有的本地变量了:
(pdb) !import code; code.interact(local=vars())
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
当你完成后,按Ctrl-D就可以返回到正常的pdb提示符了。
记得不要按Ctrl-C,这样会结束整个pdb会话。