使用python -m pdb xxx.py
进入单步调试模式,默认会在脚本的第一行可执行命令处中止。此时,经过 b function
设置以后的函数断点会提示出错,从出错异常栈中能够看出,pdb是将function
当作行号来识别,而函数名是字符串,转换成整形会失败,所以会提示出错。在处理转换整形失败异常时,会尝试执行 function
,若是当前解析器还执行到该函数(因为是刚开始调试,相关函数还没有解析),那么在该函数上设置断点又会触发异常。那么,经过单步调试,如何开始呢?python
通过多番尝试,总结这样的工程实践经验,在单步进入时,先经过 b lineno
设置为指望调试的入口行号后,按c
运行至此处,而后,经过b function
设置后续的函数断点,设置的function
要求已通过解释器解释过的。这多是pdb单步调试的缺陷。函数
还有一种侵入式的调试方式就是在源代码中导入pdb模块,在须要设置断点的地方手动加上 pdb.set_trace()
,经过python xx.py
命令启动程序后,可直接执行到断点处,而后再单步调试下去。这样对源代码有侵入性,不怎么友好。调试