2

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

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

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

4

1 回答 1

1

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

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

实际上它在一个名为“EOF”的神秘位置破裂:

(pdb) 列表
[EOF]

在我到达函数的第一行之前,我必须走两步,但这几乎不是问题。

于 2013-01-18T01:08:26.370 回答