您现在的位置是:群英 > 开发技术 > Python语言
pdb调试方法有几种,你知道多少?
Admin发表于 2021-12-04 17:45:381434 次浏览

    这篇文章给大家分享的是python代码调试的相关内容,这里主要介绍的是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() 是本文的重点,他虽然冷门,但却很好用,推荐给大家。

     关于python代码调试的相关内容就介绍到这,现在大家对pdb调试应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多python代码调试的内容,大家可以关注其它的相关文章。

文本转载自脚本之家

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: pdb调试
相关信息推荐
2022-05-13 17:56:07 
摘要:本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了js引擎如何执行js代码的相关问题,js引擎在执行js代码时,也会从上到下进行词法分析、语法分析、语义分析等处理,并在代码解析完成后生成AST,希望对大家有帮助。
2022-06-02 17:21:33 
摘要:在php中,可用array_splice()来去除多个数组元素,该函数可从指定位置开始删除指定个数的元素,语法“array_splice(数组,开始位置,删除个数)”。若第二个参数为正数组,则从前往后删除;若为负数,则从倒数的位置开始删除。
2022-05-23 17:52:00 
摘要:下面由golang教程栏目给大家介绍golang工具之present,希望对需要的朋友有所帮助!Golang Present 是 Golang 社群开发出來的一个简单工具,通过简单的语法可以制作 ppt(语法近似于 Markdown)。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部