【问题标题】:Can I initiate debugging from the interactive interpreter?我可以从交互式解释器启动调试吗?
【发布时间】:2013-01-18 01:01:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: debugging python


    【解决方案1】:

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

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

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

    (Pdb) 列表
    [EOF]

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 2015-06-29
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      相关资源
      最近更新 更多