pdb标准库

作者: PPMac | 来源:发表于2017-09-18 18:17 被阅读10次

    官方文档 : https://docs.python.org/3/library/pdb.html#debugger-commands

    介绍

    pdb是Python自带的库,是Python程序的一个交互式源代码调试工具.

    使用

    在调试器控制下运行:

    >>> import pdb
    >>> import mymodule
    >>> pdb.run('mymodule.test()')
    > <string>(0)?()
    (Pdb) continue
    > <string>(1)?()
    (Pdb) continue
    NameError: 'spam'
    > <string>(1)?()
    (Pdb)
    

    将pdb作为脚本来调试其他脚本:

    python3 -m pdb myscript.py
    

    运行后,自动进入pdb的命令行模式.

    插入在测试代码中

    import pdb; 
    pdb.set_trace()
    

    代码运行时,将在pdb.set_trace()处进入断点调试.

    pdb模块的函数

    pdb.run(statement, globals=None, locals=None)

    statement : 要调试的语句块,以字符串的形式表示
    globals: 可选参数,设置statement运行的全局环境变量
    locals: 可选参数,设置statement运行的局部环境变量

    示例 :

    >>> import pdb                # 导入调试模块  
    >>> pdb.run('''''               # 调用run()函数执行一个for循环 
    for i in range(3): 
        i *= 3 
        print(i) 
        ''')  
    > <string>(2)<module>()       
    (Pdb) n                       # (Pdb)为调试命令提示符,表示可输入调试命令  
    > <string>(3)<module>()  
    (Pdb) n                       # n(next)表示执行下一行  
    > <string>(4)<module>()  
    (Pdb) print(i)                # 打印变量i的值  
    0  
    (Pdb) continue                # 继续运行程序  
    0  
    3  
    6 
    

    runeval(expression, globals=None, locals=None)

    expression: 要调试的表达式
    globals: 可选参数,设置expression运行的全局环境变量
    locals: 可选参数,设置expression运行的局部环境变量

    import pdb
    a = "aaa"
    pdb.set_trace()
    b = "bbb"
    c = "ccc"
    pdb.runeval('a+b') 
    final = a + b + c
    print final
    

    运行结果 :

    -> b = "bbb"
    (Pdb) c
    > <string>(1)<module>()
    (Pdb) n
    --Return--
    > <string>(1)<module>()->'aaabbb'
    (Pdb) c
    aaabbbccc
    

    runcall( * args, ** kwds)

    function: 函数名
    args(kwds): 函数的参数

    import pdb
    a = 3
    b = 4
    c = 5
    def sum(a,b):
        return a+b
    result = pdb.runcall(sum,a,b)
    print result
    final = a + b + c
    pdb.set_trace()
    print final
    

    运行结果 :

    -> return a+b
    (Pdb) c
    7
    > g:\users\username\pycharmprojects\test_unittest\for_tests.py(36)<module>()
    -> print final
    (Pdb) c
    12
    

    pdb.set_trace()

    在插入这个语句的代码处开始进入硬断点.

    调试命令行

    常用断点调试命令 :

    完整命令 简写命令 描述
    args a 打印当前函数的参数
    break b 设置断点
    clear cl 清除断点
    condition 设置条件断点
    continue c 继续运行,直到遇到断点或者脚本结束
    disable 禁用断点
    enable 启用断点
    help h 查看pdb帮助
    ignore 忽略断点
    jump j 跳转到指定行数运行
    list l 列出脚本清单
    next n 执行下条语句,遇到函数不进入其内部
    print p 打印变量值
    quit q 退出pdb
    return r 一直运行到函数返回
    tbreak 设置临时断点、断点只中断一次
    step s 执行下一条语句,遇到函数进入其内部
    where w 查看所在的位置
    在pdb中执行语句

    运行过程中,单步运行时,输入上面的命令/简写命令,按Enter键执行描述的功能.

    相关文章

      网友评论

        本文标题:pdb标准库

        本文链接:https://www.haomeiwen.com/subject/acubsxtx.html