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