调试

pdb

pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++)。

命令 简写命令 作用
break b 设置断点
continue c 继续执行程序
list l 查看当前行的代码段
step s 进入函数
return r 执行代码直到从当前函数返回
quit q 中止并退出
next n 执行下一行
print 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)

日志调试

print大法好

results matching ""

    No results matching ""