Python原生调试工具pdb实践小结

使用python -m pdb xxx.py进入单步调试模式,默认会在脚本的第一行可执行命令处停止。此时,通过 b function设置之后的函数断点会提示出错,从出错异常栈中可以看出,pdb是将function当做行号来识别,而函数名是字符串,转换成整形会失败,因此会提示出错。在处理转换整形失败异常时,会尝试执行 function,如果当前解析器还执行到该函数(由于是刚开始调试,相关函数尚未解析),那么在该函数上设置断点又会触发异常。那么,通过单步调试,如何开始呢?

经过多番尝试,总结这样的工程实践经验,在单步进入时,先通过 b lineno设置为期望调试的入口行号后,按c运行至此处,然后,通过b function设置后续的函数断点,设置的function要求已经过解释器解释过的。这可能是pdb单步调试的缺陷。

还有一种侵入式的调试方式就是在源代码中导入pdb模块,在需要设置断点的地方手动加上 pdb.set_trace(),通过python xx.py命令启动程序后,可直接执行到断点处,然后再单步调试下去。这样对源代码有侵入性,不怎么友好。

转载于:https://www.cnblogs.com/cherishui/p/11397933.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值