2013-01-18 59 views
2

我目前正在Python交互式解释器会话中。我有一个我知道的功能是做一些有趣的事情,所以我想在调试器会话中完成它。我知道该函数的文件名和行号。我可以从交互式解释器启动调试吗?

有什么办法让我现在在该函数的开始设置断点,然后运行它并逐步完成它?无需打开编辑器,找到文件,找到函数,手动插入import pdb; pdb.set_trace(),保存文件,然后返回解释器,重新加载函数来自并运行它的模块?更何况,如果我忘记删除后来拼写错误的pdb跟踪。

总结问题:如果我在一个正常的Python解释器会话(或IPython的)是,是有可能的地方设置一个断点,并开始调试,无需实际代码pdb.set_trace()某处编辑?

回答

1

我不敢相信我错过了这个,但我第二次浏览了pdb documentation,并意识到所有run*函数都完全符合我的要求。他们不会让我设置一个特定的行断点,但我可以通过功能,我想使用的参数,它会打破该函数的第一行:

import pdb 
pdb.runcall(my_wonky_function, "arg1", "arg2", *myargs) 

那么实际上它在打破了所谓的“EOF”一个神秘的位置:

(Pdb) list 
[EOF]

,我收到我给函数的第一行至步骤两次,但几乎没有一个问题。

+1

我一直在寻找这个好几个月,非常感谢你! – carlito

相关问题