Python pdb调试 ipdb调试 ipython调试

pdb调试

pdb调试有两种方式:

1.单步调试代码
  • python -m pdb xxx.py 启动脚本,进入单步执行模式
hhelp-显示所有可用的命令行
wwhere-打印当前执行堆栈
ddown-执行跳转到当前堆栈的更深一层
uup-执行跳转到当前堆栈的上一层
bbreak-添加断点
b line-number在当前脚本的line-number行添加断点
b filename:line-number在脚本filename的第line-number行添加断点
b func在函数func的第一条可执行语句处添加断点
b列出当前所有的断点,以及断点执行的统计次数
tbreaktemporary break-临时断点,在第一次执行完这个断点之后,自动删除这个断点
clclear-清除所有断点,会询问,输入yes确认即可
cl bpnumber1 bpnumber2清除编号为bpnumber1 bpnumber2的断点
cl line-number清除当前脚本第line-number行的断点
cl filename:line-number清除脚本filename中第line-number行的断点
disable bpnumber停用断点,参数为bpnumber,和cl的区别是,断点依然存在,只是不启用
enable bpnumber激活断点,参数为bpnumber
sstep-单步执行,如果当前语句是函数调用,会进入函数内部,执行到函数的第一句
nnext-单步执行,如果当前语句是函数调用,不会进入函数内部,执行到当前语句的下一条语句
rreturn-执行当前运行的函数直到结束
ccontinue-继续执行,直到遇到下一条断点
llist-当前执行语句周围11条代码
l first列出第first行周围11条代码
l first,second列出first行到second行的代码(注意有一个,)
aargs-列出当前正在执行的函数的参数
p {expression}print-打印输出expression的值
pp {expression}print-打印输出expression的值,据说会好看一些
run重新启动debug,相当于restart
qquit-退出debug
j line-numberjump-设置下条执行的语句函数,只能在堆栈的最底层跳转,向后重新执行,向前可直接执行到行号
untuntil-执行到下一行(跳出循环),或者当前堆栈结束
condition bpnumber conditon给断点设置条件,当参数condition返回True的时候bpnumber断点有效,否则bpnumber断点无效
  • 临时断点与断点的区别:临时断点在第一次执行到这个断点之后,就自动删除这个断点,用法和break一样

  • bp:break point

  • bpnumber:断点编号

  • 注意:

      1:直接输入Enter,会执行上一条命令;
      2:输入PDB不认识的命令,PDB会把他当做Python语句在当前环境下执行;
    
2.import pdb pdb.set_trace()
  • pdb单步执行太麻烦了,所以第二种方法是import pdb 之后,直接在代码里需要调试的地方放一个pdb.set_trace(),就可以设置一个断点, 程序会在pdb.set_trace()暂停并进入pdb调试环境,可以用pdb 变量名查看变量,或者c继续运行

  • 在需要的地方添加:

      **通用方法**:pdb.set_trace()
      **pyton3.6以上**:breakpoint()
    

ipdb调试

IPython调试

  • 安装IPython

      pip3 install ipython
    
  • 使用IPython进行调试

      引入
      from IPython import embed
      在需要进行交互式调试的地方
      embed()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值