目录

    关于代码调试的技巧,我之前写过很多的文章,加起来也有 将近 10 篇了,关注比较早的同学,也应该都有看过。

    还没看过的同学,欢迎前往查阅:调试技巧

    其中有一篇是关于 pdb 的调试技巧的:

    里面介绍了两种 pdb 的调试入口,也是大部分所熟知的。

    这里再带大家回顾一下

    第一种:指定 -m pdb 来开启

    $ python -m pdb pdb_demo.py
    

    第二种:使用 pdb.set_trace() 在代码中设置断点

    import pdb
    pdb.set_trace()
    

    但其实,pdb 还另外两种调试方法,第一种方法,可能有 99% 的开发者都没用过,甚至连见过都没有。

    这两种方法,是配合 python console 的交互界面来实现的。

    首先我准备好一个名为 utils.py 的 python文件,里面定义了一个 sum 的工具函数(仅作演示用)。

    def sum(*args):
        result = 0
        for arg in args:
            result += arg
    
        return result
    

    然后在终端敲入 python 进入 console 的模式,导入这个模块,并调用 sum 函数,在正常情况下,函数可以正常工作。

    >>> import utils
    >>> utils.sum(1,2,3)
    6
    

    但如果你的参数类型传成了 str,函数就会报错啦~

    >>> utils.sum(1,2,"3")
    traceback (most recent call last):
      file "<stdin>", line 1, in <module>
      file "/users/ming/utils.py", line 4, in sum
        result += arg
    typeerror: unsupported operand type(s) for +=: 'int' and 'str'
    

    由于这里的报错是我刻意触发的,从报错来看,是很容易定位的。

    但是在实际应用中,难免会遇到一些无法从报错信息直接判断 bug 所在的情况。

    这个时候,如果可以在报错后,切换到 pdb 的调试模式就好了~

    事实上,pdb 是支持这种用法的。

    只要你在当前的会话中,导入 pdb,再执行 pdb.pm(),就可以切换到熟悉的 pdb 调试界面,并在抛错的地方打上断点,然后你就可以任意的查看运行时的变量信息。

    如果你不是想等报错了再调试,而是一开始就想进入调试模式,可以使用 pdb.runcall() 函数

    有的同学可能还会想到 pdb.run()pdb.runeval() 这两个函数,但这两种方法,是需要提前在函数调试断点的,这就比较麻烦了,一般情况下不推荐使用。

    综上所述, pdb 调试方法主要有六种:

    python -m pdb:运行 python 文件时直接进入调试模式

    pdb.set_trace():事先设置断点,然后直接运行 python 文件

    pdb.run():事先设置断点,然后直接运行 python 模块

    pdb.runeval():事先设置断点,然后直接运行 python 模块(与 pdb.run 类似)

    pdb.pm():在 console 模式下出错后直接切换到调试模式,并定位到报错位置。

    pdb.runcall():可以在不设置断点的情况下,直接调试代码片段。

    其中,pdb.pm() 是本文的重点,他虽然冷门,但却很好用,推荐给大家。

    以上就是我今天的分享,希望对你有用,如果你也有好用的调试小技巧,欢迎留言分享,互相学习。

    文章最后给大家介绍三个我自己写的在线文档:

    第一个文档:pycharm 中文指南 1.0 文档

    花了两个多月的时间,整理了 100 个 pycharm 的使用技巧,为了让新手能够直接上手,我花了很多的时间录制了上百张 gif 动图,有兴趣的前往在线文档阅读。

    第二个文档:pycharm 黑魔法指南 1.0 文档

    系统收录各种 python 冷门知识,python shell 的多样玩法,令人疯狂的 python 炫技操作,python 的超详细进阶知识解读,非常实用的 python 开发技巧等。

    第三个文档:python 中文指南 1.0 文档

    花了三个月时间写的一本 适合零基础入门 python 的全中文教程,搭配大量的代码案例,让初学者对 代码的运作效果有一个直观感受,教程既有深度又有广度,每篇文章都会标内容的难度,是基础还是进阶的,可供读者进行选择,是一本难得的 python 中文电子教程。

    以上就是python代码调试技巧教程详解的详细内容,更多关于python调试技巧的资料请关注www.887551.com其它相关文章!