Python代码出错了怎么办?来试试这样调试!
Pdb就是Python debugger ,是python自带的调试器
1 pdb的调用pdb是python标准库,所以调用很简单import pdb2 pdb设置断点就是在你认为可能出错的地方设置一个断点pdb.set_trace()3 一个网上的实例来说明pdb的用法import pdb
def test (p): p=p+1 return p
def fastdebug(): pdb.set_trace() print(' start') temp = 'ready ' print('ok') res = test(temp) print('end') fastdebug()test函数接收一个参数p并计算p+1的值传出,这里传入的参数本应该是数值型,但是参数temp是str字符串,所以当我们执行上面一段代码时一定会报错!
可以看到运行代码后,pdb的调试器控制台将从放置set_trace()的位置开始等待我们的命令,并且箭头标记指向pdb接下来要运行的行。那么接下来介绍一些pdb中常用命令。4 pdb中的常用命令4.1 使用 n 来执行下一行在弹出的文本框中输入 n 即可执行该行,并且箭头将指向下一行即将执行的代码
4.2 使用 ENTER 重复上一个命令现在还没有到报错的位置,我们使用 n 或者直接 回车 重复执行上一个命令
4.3 使用 p 打印变量值在Pdb中我们可以使用 p 变量名 来查看变量值,比如我们查看变量 temp 的值
4.4 使用 l 查看上下行代码在Pdb中我们可以使用 l 查看当前行上下几行代码
4.5 使用 s 进入子函数现在,我们来到出错的这一行,之所以报错就是传进去变量出了问题,因此我们可以在pdb交互行中使用 s 来进入 子函数test()
4.6 使用 r 执行函数直到结束在pdb中可以使用 r 来执行当前运行函数到结束
4.7 使用 c 停止调试并继续运行
可以发现提示了错误信息:TypeError: can only concatenate str (not "int") to str
所以我们进行了调试:将 temp = 'ready' 修改为 temp =0
可以使用 c 命令继续执行命令
4.8 输入 q 直接退出调试界面
5 写在最后
多线程相关
比较大型的项目
上面两种情况下,pdb将不是最好的选择,会显得力不从心,因此我们需要灵活选择调试方案。
最新活动更多
-
11月22日立即报名>> 【线下论坛】华邦电子与莱迪思联合技术论坛
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
7.30-8.1马上报名>>> 【展会】全数会 2025先进激光及工业光电展
-
精彩回顾立即查看>> 【线下论坛】华邦电子与恩智浦联合技术论坛
-
精彩回顾立即查看>> 【线下巡回】2024 STM32 全球巡回研讨会
-
精彩回顾立即查看>> 2024先进激光技术博览展
-
10 携程集团,彻底爆了!
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论