加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用pdb的条件断点

发布时间:2020-12-20 12:07:10 所属栏目:Python 来源:网络整理
导读:听起来我错过了一些非常简单的东西,我试图在我的 python代码中使用以下命令设置断点: if(some condition): pdb.set_trace() 代码中的错误是在大量迭代之后出现的……很难使用print等进行调试. 当条件命中时我能够打印东西,但我想设置brk-pt. – 编辑 – 实
听起来我错过了一些非常简单的东西,我试图在我的 python代码中使用以下命令设置断点:

if(some condition):
        pdb.set_trace()

代码中的错误是在大量迭代之后出现的……很难使用print等进行调试.
当条件命中时我能够打印东西,但我想设置brk-pt.

– 编辑 –

实际代码:

import pdb
if (node_num == 16):
    print node_num
    pdb.set_trace()

解决方法

我不确定为什么你的代码不能正常工作,但是你能做的就是在你的本地机器上,为你的最小例子创建一个新文件,看看你能做你想做的事情

import pdb

for node_num in range(50):
    if node_num == 16:
        print(node_num)
        pdb.set_trace()

现在运行它:

16
> /tmp/tmp.py(3)<module>()
-> for node_num in range(50):
(Pdb) p node_num
16

正如您所看到的,这可以通过这个简单的示例按预期工作,由您决定如何使其适应您的代码,和/或弄清楚您对代码/环境做了哪些其他事情,阻止该提示出现.

或者,如果您有一个在异常中死亡的函数并且您想知道导致它的确切行,则应该使用post_mortem.用这个包装有问题的代码部分

try:
    problem_function()
except Exception:  # or the specific exception type thrown
    pdb.post_mortem()
    raise

post_mortem将做的是在发生异常的位置(特别是在该堆栈帧中)转储一个断点,这样就可以检查所有值,然后让你继续执行.但是我也在最后加注以允许异常继续正常,这是因为执行通常不会从它死亡的地方执行,而是由于post_mortem调用而暂停在该异常处理块.在检查出了什么问题之后,还可以放弃.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读