PDB使用

34 篇文章 0 订阅
5 篇文章 0 订阅

调试Python程序的小工具

首先众所周知调试C程序的高效率工具–GDB有了Python版本:pdb

安装
pip install pdb

调试程序样例:

# test.py
import signal
import time
def get(d):
    print(d)
    print(d+1)
    time.sleep(60)
    return None
get(1)

使用技巧

进入pdb调试环境;

python3 -m pdb test.py

在这里插入图片描述

输入"ll"(L)显示源码(箭头表示当前运行位置):

(Pdb) ll
 1  ->	import signal
  2
  3  	import time
  ...
 12  	def get(d):
 13  	    print(d)
 14  	    print(d+1)
 15  	    time.sleep(60)
 16  	    return None
 17  	get(1)
 18  	exit()

输入n运行下一行(import time);
接下来给15行打个断点:

(Pdb) tbreak 15
Breakpoint 1 at test.py:15

但是发现15行并没有问题,清除15行的断点。并给16行添加断点

(Pdb)  cl 15
*** Breakpoint number 15 out of range
(Pdb) b 16
Breakpoint 2 at  test.py:16

看下调用函数的内部使用s ,查看函数的参数使用a;

(Pdb)  s
><frozen importlib._bootstrap>(144)__init__()
(Pdb)  a


但是逐行的看太慢了,执行到20行停下来:

(Pdb) unt 20

还是太慢了,跳转到22行吧(注意跳过的代码不执行):

(Pdb)  22

打印堆栈信息使用w,打印使用p ,查看变量类型使用whatis。
调试过程经常会需要写测试代码(ctrl D退出到pdb):

(Pdb)  interact
>>> 

退出pdb使用q。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值