miemieyang

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。

 

 下面结合具体的实例讲述如何使用 pdb 进行调试

方式1:在需要打断点的代码前加上 import pdb; pdb.set_trace()

方式2:在需要打断点的代码前加上breakpoint()   ----python3.6版本以后使用

代码示例:

1 s = '0'
2 n = int(s)
3 # import pdb;pdb.set_trace()
4 breakpoint()
5 print(n)
6 print(10/n)

 

 在pycharm中执行代码:此时断点定位到第五行  print(n)

 

 常用命令1:help --查看pdb中的帮助

 

  常用命令2:list或者l  列出当前执行语句周围11条代码

 l first 列出first行周围11条代码

 l first second 列出first--second范围的代码,如果second<first,second将被解析为行数

 

  常用命令3:break或者b  添加断点

                 b 列出当前所有断点,和断点执行到统计次数

                 b line_no:当前脚本的line_no行添加断点

                 b filename:line_no:脚本filename的line_no行添加断点

                 b function:在函数function的第一条可执行语句处添加断点

 

 

常用命令4:cl:(clear)清除断点

                cl 清除所有断点

                cl bpnumber1 bpnumber2... 清除断点号为bpnumber1,bpnumber2...的断点

                cl lineno 清除当前脚本lineno行的断点

                cl filename:line_no 清除脚本filename的line_no行的断点

常用命令5:disable:停用断点,参数为bpnumber,和cl的区别是,断点依然存在,只是不启用

常用命令6:enable:激活断点,参数为bpnumber

常用命令7:s:(step)执行下一条命令

                如果本句是函数调用,则s会执行到函数的第一句,进入函数内部

 

 

函数内容如下:

 

 

 

接下来执行s命令,进入函数内部执行内部第一条语句

 

 

 常用命令8:n:(next)执行下一条语句

                如果本句是函数调用,则执行函数,接着执行当前执行语句的下一条。直接将函数执行完

将函数中的两条语句直接执行

 

 

 

常用命令8:r:(return)执行当前运行函数到结束

常用命令9:c:(continue)继续执行,直到遇到下一条断点

常用命令10:a:(args)列出当前执行函数的函数

常用命令11:p expression:(print)输出expression的值

常用命令12:pp expression:好看一点的p expression

常用命令13:run:重新启动debug,相当于restart

常用命令14:q:(quit)退出debug

常用命令15:j lineno:(jump)设置下条执行的语句函数

                只能在堆栈的最底层跳转,向后重新执行,向前可直接执行到行号

常用命令16:unt:(until)执行到下一行(跳出循环),或者当前堆栈结束

常用命令17:condition bpnumber conditon,给断点设置条件,当参数condition返回True的时候bpnumber断点有效,否则bpnumber断点无效

注意:

    1:直接输入Enter,会执行上一条命令;

    2:输入PDB不认识的命令,PDB会把他当做Python语句在当前环境下执行;

 

参考文章:https://blog.csdn.net/AFishhhhhh/article/details/81006066

     https://www.cnblogs.com/xiaohai2003ly/p/8529472.html

 

分类:

技术点:

相关文章: