PDB调试Python程序

pdb是python内置的调试工具, 它可以在终端中调试Python程序, 这允许pdb在很多无法安装IDE的服务器上使用.

虽然远程调试使用广泛, 但在必要的时候(比如难以在本地搭建运行环境)pdb仍然是一个便利的选择.

我们可以在python源代码中设置断点:

import pdb

def func():
    for i in range(100):
        pdb.set_trace() # set breakpoint
        print(i)

随后执行源文件, pdb.set_trace()会如同一个断点阻塞当前Python进程进入pdb终端.或者使用python -m pdb test.py指令从第一行开始调试进入.

test.py(5)<module>()
-> print(i)
(Pdb)

pdb终端会显示文件名, 行号,当前文件, 下一行指令等信息.并等待用户指令:

  • c / continue: 继续执行, 直至进程完成或被断点阻塞

  • n / next: 执行下一条指令, 若遇函数直接得到函数返回值, 不进入

  • s / step: 步进执行下一条指令,若遇函数则进入执行

  • r / return: 跳出当前函数, 返回调用栈的上一层

  • b / breakpoint [<line_num>] : 在指定行(下一条指令处)设置一个断点:b, b 5

  • a / args: 显示当前函数的参数

  • q / exit: 中止进程执行

  • l / list: 显示下一条指令所在的代码块

  • pp <obj_name>: 显示某个对象的值

  • disable / enable <line_num>: 禁用/启用某行上的断点

  • condition [<line_num>] <condition>: 在指定行上设置条件断点.如:condition 5 i==3

  • !<expr>: 动态执行一条语句, 可以是赋值等指令: !i=2, !1==1.

参考资料:

原文地址:https://www.cnblogs.com/Finley/p/6071463.html