python pdb之快速事后调试

事后调试(post-mortem debugging)是程序出错时的一种调试模式,通过python-mbpdb运行脚本可进入此模式。在遇到异常时,pdb模块帮助交互式检查变量、设置断点。进入事后调试后,可以使用w、u、d和b等命令进行调试,如设置断点后,通过c或n执行,再次进入调试模式,方便问题定位。这种方式在没有IDE时尤其有用,简化了手动设置断点的过程。
摘要由CSDN通过智能技术生成

        事后调试(post-mortem debugging)指的是程序运行发生异常而进入的调试模式。

        当执行一个python脚本触发异常时,我们可以通过该方式进行问题的快速定位。使用如下命令执行需要调试的python脚本: python -m pdb script.py,该执行方式使用了python的标准模块pdb,pdb是python用来调试程序的模块。使用该方式执行脚本,脚本会从第一行开始就进入调试模式,然后直接输入c回车,程序就会一直执行,直到程序遇到异常;当程序遇到异常后,python便会立即进入所谓的事后调试模式(post-mortem debugging mode),并且程序会停止在触发异常的那一行,在该位置,我们便可以交互地进行调试了,包括变量的查看、代码的执行等,从而可以快速的定位到问题。这样做的好处在于,省得我们要回到脚本相应的位置手动的设置断点,特别是在没有IDE的情况下,比如在命令行执行脚本的时候,以及后续对断点代码的删除。

        进入事后调试模式后,输入c或者n都会结束事后调试模式,并且重启程序,从程序第一行开始重新进入调试模式,但是依然会记住事后调试模式的状态,比如如果你在事后调试模式中通过b命令设置的断点。因此,事后调试模式有点像为了定位问题进行埋点(断点设置),然后再重新进入调试模式,并且c到断点处进行详细定位,因为这时可以通过n逐行运行代码,而不是直接退出事后调试模式。

        通常配合事后调试模式的pdb命令有获取当前程序所追踪的最新帧、切换当前帧、设置断点等,对应地,我们可以通过w(where)命令获取当前帧以及上下文,箭头所指就是对应的帧;通过u(up)和d(down)来切换当前帧,并且移动当前帧所在的脚本文件;通过b(break) lineno命令在指定的行设置断点,因为b lineno中的lineno指的是当前帧所在的脚本文件对应的行数,所以需要进行帧的切换,以在我们想要的文件中设置断点,此外也可以b funcname方式在相应的函数第一行设置断点,当然该函数也应该在当前帧所在的脚本文件内才行。上述一般在事后调试模式中进行,然后通过c或n结束事后调试,自动重启程序,再进入普通调试模式进行详细问题的定位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值