Python的调试框架bdb及调试器Pdb

1. Python标准库中的Debugger框架bdb模块
提供基本的调试功能,如设置断点、管理Debugger的执行等。
bdb模块的组成:

  • 异常bdb.BdbQuit(Exception)
  • 类class bdb.Breakpoint
  • 类class bdb.Bdb(skip=None)

Bdb是Python Debugger的基类,实际使用的Python Debugger是其子类Pdb。

  • 测试类class Tdb(Bdb)
  • def set_trace()

该方法用以开启调试。

  • def checkfuncname(b, frame)
  • def effective(file, line, frame)

该方法用以确定相对于该file的该line,哪个Breakpoint有效。

2. Python Debugger调试器

Python的一款交互式调试器,可以设置断点、单步调试、检查堆栈。

1) pdb模块中的Pdb类

class Pdb(bdb.Bdb, cmd.Cmd)

2) 启动调试的方式

  • Python解释器的命令行中

python3
import pdb
pdb.run('mymodule.mytest()')
  • 调试一个脚本文件

python3 -m pdb myscript.py

  • 在Python源代码中

import pdb; pdb.set_trace()
...
pdb.pm()
#进入调试模式

3) 调试命令

  • h,帮助
  • w,打印堆栈
  • d,在堆栈中移动到下一级frame
  • u,在堆栈中移动到上一级frame
  • b lineno|func,在指定位置处设置断点
  • tbreak lineno|func,在指定位置处设置临时断点,执行时断点只生效一次
  • disable bp_number,禁用指定断点
  • enable bp_number,启动指定断点
  • ignore bp_number count,忽略指定断点count次
  • cl,清除所有断点
  • cl lineno|func|bp_number,清除指定位置处的断点
  • s,执行当前行,不进入被调用的函数
  • n,执行到下一行,如果调用了其他函数则执行被调用函数
  • unt,执行…直到
  • r,执行到return
  • c,继续执行
  • j lineno,跳转到指定行
  • l,
  • ll,
  • a,
  • p ,
  • pp ,
  • whatis ,
  • source ,
  • display ,
  • undisplay ,
  • run,重启代码的执行
  • restart,同run
  • q,退出调试模式
  • alias myname my_command,设置别名
  • 通常在.pdbrc文件中
  • unalias myname,取消别名
  • interact

参考链接:

https://docs.python.org/3.5/library/bdb.html
https://github.com/python/cpython/blob/3.5/Lib/bdb.py

https://docs.python.org/3.5/library/pdb.html
https://github.com/python/cpython/blob/3.5/Lib/pdb.py

    原文作者:易生一世
    原文地址: https://blog.csdn.net/taiyangdao/article/details/78287348
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞