调试
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)