Skip to main content
 首页 » 编程设计

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

2025年05月04日30artech

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

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

问题总结:如果我在正常的 Python 解释器 session (或 iPython)中,是否可以在某处设置断点并开始调试,而不必实际编辑代码 pdb.set_trace() 某处?

请您参考如下方法:

我不敢相信我错过了这个,但我只是扫了一眼 pdb documentation第二次,我意识到所有的 run* 函数都完全符合我的要求。他们不让我设置特定行作为断点,但我可以传递函数和我想使用的参数,它会在函数的第一行中断:

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

实际上它是在一个叫做“EOF”的神秘位置破裂的:

(Pdb) list 
[EOF]

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