调试
pdb
pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++)。
命令 | 简写命令 | 作用 |
---|---|---|
break | b | 设置断点 |
continue | c | 继续执行程序 |
list | l | 查看当前行的代码段 |
step | s | 进入函数 |
return | r | 执行代码直到从当前函数返回 |
quit | q | 中止并退出 |
next | n | 执行下一行 |
p | 打印变量的值 | |
help | h | 帮助 |
args | a | 查看传入参数 |
回车 | 重复上一条命令 | |
break | b | 显示所有断点 |
break lineno | b lineno | 在指定行设置断点 |
break file:lineno | b file:lineno | 在指定文件的行设置断点 |
clear num | 删除指定断点 | |
bt | 查看函数调用栈帧 |
执行时调试
程序启动,停止在第一行等待单步调试。
python -m pdb some.py
交互调试
进入python或ipython解释器
import pdb
pdb.run('testfun(args)')
程序里埋点
当程序执行到pdb.set_trace() 位置时停下来调试
#coding=utf-8
import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
# pdb.set_trace()
final = a + b + c
print(final)
# l-->list 查看源代码
# p-->print 查看变量的值
# n-->next 执行下面的一行代码
# c-->continue 继续执行下面的代码,再次遇到需要停止的地方才会停,比如:pdb.set_trace()或者是断点 b 行号
# b--->breakpoint 断点
#coding=utf-8
import pdb
def combine(s1,s2):
s3 = s1 + s2 + s1
s3 = '"' + s3 +'"'
return s3
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = combine(a,b)
print(final)
# s---->step 进入到一个函数里面
# r---->return 执行到这个函数的最后一行
# a---->args 传递给函数的所有参数
# 修改变量的值 [!]变量名 = 新数值
#coding=utf-8
import pdb
class ClassName(object):
"""docstring for ClassName"""
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg
def add3Nums(a1,a2,a3):
result = a1+a2+a3
return result
def get3NumsAvarage(s1,s2):
s3 = s1 + s2 + s1
result = 0
result = add3Nums(s1,s2,s3)/3
if __name__ == '__main__':
a = 11
# pdb.set_trace()
b = 12
final = get3NumsAvarage(a,b)
print(final)