Python命令行调试器pdb简介

        Python语言的使用越来越广泛,已成为数据处理和人工智能软件的主要编程语言。Python代码的编写和调试可以在Anaconda等图形化开发工具中进行,但是有些人偏爱在命令行界面中进行开发和调试。本文介绍Python的命令行调试器pdb的使用方法。

一、启动调试过程

        用pdb调试Python代码有两种启动方式,下面依次进行介绍

        1. 使用命令启动

python -m pdb ./filename

        输入上述命令后,即可进入调试界面,如下图所示

        2. 在程序中添加调试控制语句

        如下图中的示例程序,在第4行插入import pdb表示在执行该程序时启用调试器。第11行插入的pdb.set_trace() 表示在下一行插入断点。

        添加完成后正常启动程序,即可进入调试界面,程序会自动运行到断点处暂停,如下图所示。

扫描二维码关注公众号,回复: 14672042 查看本文章

         这种调试方式有一个缺点,在调试完成后想要正常运行程序时,需要将先前添加的调试控制语句注释或删除,使用不如第一种方式方便。

二、常用命令

        1. 查看源代码命令

l(ist) [first [, last]]

                若不带参数,则列出当前所在行附近的11行代码或接上一条list命令列出后续11行代码。

                若参数为一个行号,则从指定行号开始列出11行代码。

                若参数为两个行号表示的范围,则列出该范围的代码。

        2. 断点命令

b(reak) ([file:]lineno | function) [, condition]

                若不带参数,则显示所有断点的信息。

                若参数为行号,则在当前文件中指定行处插入断点。

                若在行号前添加文件名和冒号,则在指定文件的指定行处插入断点。

                若参数为函数,则在进入该函数后的第一行插入断点。

                若存在第二个参数,则该参数为一个条件表达式。仅当该表达式的值为true时,断点才生效。

                该命令的实际应用如下图所示。

        3. 连续运行

c(ont(inue))

                表示从当前位置开始连续执行程序,直到命中断点、程序结束或发生异常为止。

        3. 单步运行

          (1)单步跳过

n(ext)

                执行当前行后停在下一行入口,若当前行有函数调用,不会进入函数内部。

          (2)单步进入

s(tep)

                执行当前行后停在下一行入口,若当前行有函数调用,则进入函数体并停在函数入口。

        4. 查看堆栈

w(here) 或 bt

                由内到外,列出当前位置的堆栈回溯信息,当前栈帧用箭头>指出。

        5. 显示变量或表达式的值

p expression

                打印出参数指定的变量或表达式的值,如下图所示。

        6. 清除断点

cl(ear) filename:lineno
cl(ear) [bpnumber [bpnumber...]]

                若不带参数则清除所有断点,会有二次确认提示。

                若参数为数字,则清除指定编号的断点。断点编号可用命令b查看。

                若参数为文件名:行号,则清除指定位置的断点。

                该命令的实际应用如下图所示。

三、pdb命令集

        除上述常用命令外,pdb还提供了实现更多功能的调试命令。下表简要梳理了pdb的命令集。        

猜你喜欢

转载自blog.csdn.net/ClarkCC/article/details/122376353