我可以从交互式解释器启动调试吗?

时间:2013-01-18 01:01:07

标签: debugging python

我目前正在使用Python交互式解释器会话。我有一个功能,我知道它正在做一些时髦的事情,所以我想在调试器会话中逐步完成它。我知道函数的文件名和行号。

我现在有什么方法可以在该函数的开头设置一个断点,然后运行它并逐步执行它?无需打开编辑器,找到文件,找到该函数,手动插入import pdb; pdb.set_trace(),保存文件,然后返回解释器,重新加载函数来自的模块并运行它?更不用说如果我忘记删除后来会造成麻烦的pdb跟踪。

总结问题:如果我在普通的Python解释器会话(或iPython)中,是否可以在某处设置断点并开始调试,而无需在代码中进行实际编辑{ {1}}某个地方?

1 个答案:

答案 0 :(得分:1)

我无法相信我错过了这一点,但我只是第二次浏览了pdb documentation并意识到所有run*函数都完全符合我的要求。它们不允许我将特定行设置为断点,但我可以传递我想要使用的函数和参数,它将在函数的第一行中断:

import pdb
pdb.runcall(my_wonky_function, "arg1", "arg2", *myargs)
实际上它在一个名为“EOF”的神秘位置破裂了:

(Pdb) list
[EOF]

在我到达函数的第一行之前我不得不两步,但这不是问题。