代码质量:异常、测试与日志
调试:bdb与pdb
Python标准库中的Debugger框架bdb模块
提供基本的调试功能,如设置断点、管理Debugger的执行等。
bdb模块的组成:
- 异常bdb.BdbQuit(Exception)
- 类class bdb.Breakpoint
- 类class bdb.Bdb(skip=None)
- 测试类class Tdb(Bdb)
Failed with: TOML parsing error: expected an equals, found a newline at line 1 column 5
Original markdown input:
```admonish tip title='pdb是bdb的子类
Bdb是Python Debugger的基类,实际使用的Python Debugger是其子类Pdb。
```
- def set_trace(): 该方法用以开启调试。
- def checkfuncname(b, frame)
- def effective(file, line, frame): 该方法用以确定相对于该file的该line,哪个Breakpoint有效。
Python Debugger调试器
Python的一款交互式调试器,可以设置断点、单步调试、检查堆栈。
pdb模块中的Pdb类
class Pdb(bdb.Bdb, cmd.Cmd)
启动调试的方式
- Python解释器的命令行中
# python3
import pdb
pdb.run('mymodule.mytest()')
- 调试一个脚本文件
python3 -m pdb myscript.py
- 在Python源代码中
import pdb;
pdb.set_trace()
# ...
pdb.pm()
# 进入调试模式
调试命令
-
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