我目前正在使用Python交互式解释器会话。我有一个功能,我知道它正在做一些时髦的事情,所以我想在调试器会话中逐步完成它。我知道函数的文件名和行号。
我现在有什么方法可以在该函数的开头设置一个断点,然后运行它并逐步执行它?无需打开编辑器,找到文件,找到该函数,手动插入import pdb; pdb.set_trace()
,保存文件,然后返回解释器,重新加载函数来自的模块并运行它?更不用说如果我忘记删除后来会造成麻烦的pdb跟踪。
总结问题:如果我在普通的Python解释器会话(或iPython)中,是否可以在某处设置断点并开始调试,而无需在代码中进行实际编辑{ {1}}某个地方?
答案 0 :(得分:1)
我无法相信我错过了这一点,但我只是第二次浏览了pdb documentation并意识到所有run*
函数都完全符合我的要求。它们不允许我将特定行设置为断点,但我可以传递我想要使用的函数和参数,它将在函数的第一行中断:
import pdb
pdb.runcall(my_wonky_function, "arg1", "arg2", *myargs)
实际上它在一个名为“EOF”的神秘位置破裂了:
(Pdb) list [EOF]
在我到达函数的第一行之前我不得不两步,但这不是问题。