返回顶部
首页 > 资讯 > 后端开发 > Python >Python必备的debug神器pdb怎么用
  • 481
分享到

Python必备的debug神器pdb怎么用

2023-06-02 05:06:33 481人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章给大家介绍python必备的debug神器pdb怎么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。学Python 必备的debug 神器-pdb首先,介绍一下 pdb 调试,pdb 是 python 的一个内

这篇文章给大家介绍python必备的debug神器pdb怎么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Python 必备的debug 神器-pdb

首先,介绍一下 pdb 调试,pdb 是 python 的一个内置模块,用于命令行来调试 Python 代码。或许你会说,现在用 PyCharm 等编辑器来调试代码很方便,为啥要用命令行呢?这个问题,我曾经也这么想,直到有一次,代码必须要在 linux 系统上跑(现在 Pycharm 也可以远程调试代码了,今天先不说这个)

使用介绍

如何添加断点?

说到 debug,肯定是要添加断点的,这里有两种方式添加断点:

  • 在想要断点代码后添加 一行

pdb.set_trace()

若是使用这种方式,直接运行 Python 文件即可进入断点调试。

  • 用命令行来添加断点

b line_number(代码行数)

若是使用这种方式,需要 python -m pdb xxx.py 来启动断点调试。

常用命令

先简单介绍一下使用命令,这里不用记住,等用到的时候回来查就行。

1 进入命令行Debug模式,python -m pdb xxx.py

2 h:(help)帮助

3 w:(where)打印当前执行堆栈

4 d:(down)执行跳转到在当前堆栈的深一层(个人没觉得有什么用处)

5 u:(up)执行跳转到当前堆栈的上一层

6 b:(break)添加断点

 b 列出当前所有断点,和断点执行到统计次数 b line_no:当前脚本的line_no行添加断点 b filename:line_no:脚本filename的line_no行添加断点 b function:在函数function的第一条可执行语句处添加断点

7 tbreak:(temporary break)临时断点

 在第一次执行到这个断点之后,就自动删除这个断点,用法和b一样

8 cl:(clear)清除断点

 cl 清除所有断点 cl bpnumber1 bpnumber2... 清除断点号为bpnumber1,bpnumber2...的断点 cl lineno 清除当前脚本lineno行的断点 cl filename:line_no 清除脚本filename的line_no行的断点

9 disable:停用断点,参数为bpnumber,和cl的区别是,断点依然存在,只是不启用

10 enable:激活断点,参数为bpnumber

11 s:(step)执行下一条命令

 如果本句是函数调用,则s会执行到函数的第一句

12 n:(next)执行下一条语句

 如果本句是函数调用,则执行函数,接着执行当前执行语句的下一条。

13 r:(return)执行当前运行函数到结束

14 c:(continue)继续执行,直到遇到下一条断点

15 l:(list)列出源码

 l 列出当前执行语句周围11条代码 l first 列出first行周围11条代码 l first second 列出first--second范围的代码,如果second<first,second将被解析为行数

16 a:(args)列出当前执行函数的函数

17 p expression:(print)输出expression的值

18 pp expression:好看一点的p expression

19 run:重新启动debug,相当于restart

20 q:(quit)退出debug

21 j lineno:(jump)设置下条执行的语句函数

 只能在堆栈的最底层跳转,向后重新执行,向前可直接执行到行号

22)unt:(until)执行到下一行(跳出循环),或者当前堆栈结束

23)condition bpnumber conditon,给断点设置条件,当参数condition返回True的时候bpnumber断点有效,否则bpnumber断点无效

举个简单的栗子

为了验证一下 pdb 的用法,我写了个简单的 Python 代码,如下:

__author__ = 'zone'__gzh__ = '公号:zone7'import pdbclass Myscrapy: urls = [] def start_url(self, urls): pdb.set_trace() for url in urls: print(url) self.urls.append(url) def parse(self): pdb.set_trace() for url in self.urls: result = self.request_something(url) def request_something(self, url): print('requesting...') data = '''<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Title</title></head><body></body></html>''' return datascrapy= MyScrapy()scrapy.start_url(["Http://www.zone7.cn", "http://www.zone7.cn", "http://www.zone7.cn", "http://www.zone7.cn", ])scrapy.parse()

运行实例:(这里为了方便大家阅读,我添加了中文注释,实际运行时不会有注释的)

D:workenvScriptspython.exe D:/work_test/test/pdb_test/pdb_test.py> d:work_test estpdb_testpdb_test.py(11)start_url()-> for url in urls:(Pdb) n 注释:n(next)执行下一步> d:work_test estpdb_testpdb_test.py(12)start_url()-> print(url)(Pdb) l 注释: l(list)列出当前代码 7   urls = [] 8   9   def start_url(self, urls): 10   pdb.set_trace() 11   for url in urls: 12 ->  print(url) 13   self.urls.append(url) 14   15   def parse(self): 16   pdb.set_trace() 17   for url in self.urls:(Pdb) c 注释:c(continue),继续执行,知道遇到下一个断点http://www.zone7.cnhttp://www.zone7.cnhttp://www.zone7.cnhttp://www.zone7.cn> d:work_test estpdb_testpdb_test.py(17)parse()-> for url in self.urls:(Pdb) n 注释:n(next)执行下一步> d:work_test estpdb_testpdb_test.py(18)parse()-> result = self.request_something(url)(Pdb) l 注释: l(list)列出当前代码 13   self.urls.append(url) 14   15   def parse(self): 16   pdb.set_trace() 17   for url in self.urls: 18 ->  result = self.request_something(url) 19   20   def request_something(self, url): 21   print('requesting...') 22   data = '''<!DOCTYPE html> 23  <html>(Pdb) s 注释: s(step)这里是进入 request_something() 函数的意思--Call--> d:work_test estpdb_testpdb_test.py(20)request_something()-> def request_something(self, url):(Pdb) n 注释:n(next)执行下一步> d:work_test estpdb_testpdb_test.py(21)request_something()-> print('requesting...')(Pdb) l 注释: l(list)列出当前代码 16   pdb.set_trace() 17   for url in self.urls: 18   result = self.request_something(url) 19   20   def request_something(self, url): 21 ->  print('requesting...') 22   data = '''<!DOCTYPE html> 23  <html> 24  <head> 25   <meta charset="UTF-8"> 26   <title>Title</title>(Pdb) p url 注释:p(print)打印出 url 变量的数据'http://www.zone7.cn'(Pdb) n 注释:n(next)执行下一步requesting...> d:work_test estpdb_testpdb_test.py(31)request_something()-> </html>'''(Pdb) p data 注释:p(print)打印出指定变量的数据,这里由于赋值还没完成,所以报错*** NameError: name 'data' is not defined(Pdb) n 注释:n(next)执行下一步> d:work_test estpdb_testpdb_test.py(32)request_something()-> return data(Pdb) p data 注释:p(print)打印出指定变量的数据'<!DOCTYPE html> <html> <head>  <meta charset="UTF-8">  <title>Title</title> </head> <body> </body> </html>'(Pdb) q 注释:q(quit)退出

关于Python必备的debug神器pdb怎么用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Python必备的debug神器pdb怎么用

本文链接: https://lsjlt.com/news/229090.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python必备的debug神器pdb怎么用
    这篇文章给大家介绍Python必备的debug神器pdb怎么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。学Python 必备的debug 神器-pdb首先,介绍一下 pdb 调试,pdb 是 python 的一个内...
    99+
    2023-06-02
  • python必备库Matplotlib画图神器
    目录1.安装方法2.用好官网的例子最简单的应用-折线图添加注释的方法柱状图-Bar Label折线图之CSD前言: Matplotlib 通常与 NumPy、Pandas 一起使用,...
    99+
    2024-04-02
  • 一款懒人必备的Python爬虫神器
    前言今天把最近的一个应用做好了,测试了一下运行没有问题,剩下的就是检验一下结果如何.从光谱到Lab值通常使用matlab中的roo2lab(),不过经过我最近的测试发现转换的结果并不理想,而且这个转化的代码也不是我写的所以另寻他法,找到了下...
    99+
    2023-05-14
    Python 爬虫神器
  • python中调试器pdb怎么用
    这篇文章主要介绍了python中调试器pdb怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用PDB的方式有两种:1. 单步执行代码,通过命令 python -m pd...
    99+
    2023-06-07
  • python pdb调试器怎么使用
    要使用Python中的PDB(Python Debugger)调试器,您可以按照以下步骤操作: 在代码中插入断点:在需要进行调试的...
    99+
    2024-03-06
    python
  • 实时调试神器!Windows 平台 Python Leetcode 刷题必备!
    作为一名 Python 程序员,Leetcode 刷题是我们日常的必修课。而在刷题过程中,我们经常需要进行调试和测试,这时候一个实时调试神器就显得尤为重要了。本文将介绍一款 Windows 平台 Python 实时调试神器——Pdb++。 ...
    99+
    2023-09-24
    leetcode 实时 windows
  • python必备库Matplotlib怎么使用
    本篇内容介绍了“python必备库Matplotlib怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:Matplotlib 通常...
    99+
    2023-06-29
  • 怎么用pdb进行Python调试
    本篇内容主要讲解“怎么用pdb进行Python调试”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用pdb进行Python调试”吧!调试应用有时是一个不受欢迎的工作,当你长期编码之后,只希望写...
    99+
    2023-06-20
  • Serverless Framework 大揭秘:Node.js 开发人员必备的神器
    特性 无服务器应用程序的构建:可以通过 YAML 或 JavaScript 定义应用程序结构、事件处理程序和资源配置。 本地开发:支持本地模拟,以便在部署之前测试和调试应用程序。 部署管理:提供一键部署到 AWS、Azure 和 Goo...
    99+
    2024-03-02
    Serverless Framework, Node.js, 无服务器, 部署, 托管
  • 想要成为Java大神?Laravel数据类型教程是你的必备神器!
    Java是一门广泛使用的编程语言,它具有可移植性、面向对象、高性能等特点,因此在软件开发领域中得到了广泛应用。而Laravel是一款流行的PHP框架,它提供了许多有用的功能和工具,使得PHP开发变得更加轻松。 在Java开发中,数据类型是...
    99+
    2023-09-21
    教程 laravel 数据类型
  • python怎么使用pdb调试代码
    小编给大家分享一下python怎么使用pdb调试代码,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用pdb调试代码Python有自己的内置调试器-pdb。调试器...
    99+
    2023-06-27
  • python调试工具pdb怎么使用
    这篇文章主要讲解了“python调试工具pdb怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python调试工具pdb怎么使用”吧!一、pdb 有2种用法pdb:python deb...
    99+
    2023-07-04
  • 深入剖析 ASP DataPager:网络应用程序必备的分页神器
    ASP DataPager 简介 ASP DataPager 是一个 ASP.NET 控件,用于在 Web 应用程序中对数据进行分页。它是一个轻量级且高度可定制的控件,可以轻松集成到任何类型的 Web 应用程序中。DataPager 允许...
    99+
    2024-03-02
    ASP DataPager、分页、Web 应用程序
  • 为什么 HTML 外部样式表是网页设计的必备神器?
    ...
    99+
    2024-04-02
  • python中debug的用法是什么
    在Python中,可以使用以下几种方式进行调试:1. 使用print语句:在代码中插入print语句,输出变量的值或者特定位置的信息...
    99+
    2023-10-19
    python
  • Windows 平台上,NumPy 是 Go 缓存操作的必备神器吗?
    在 Windows 平台上,缓存操作是一个非常重要的问题。为了提高程序的运行效率,我们需要使用一些高效的工具来进行缓存操作。其中,NumPy 是一个非常受欢迎的缓存操作工具,而 Go 编程语言则是一种非常流行的编程语言。那么,在 Windo...
    99+
    2023-07-10
    缓存 windows numy
  • Python打包神器Nuitka怎么使用
    这篇文章主要讲解了“Python打包神器Nuitka怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python打包神器Nuitka怎么使用”吧!一. pyinstaller和Nuit...
    99+
    2023-07-06
  • Python爬虫神器playwright怎么使用
    这篇文章主要介绍了Python爬虫神器playwright怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python爬虫神器playwright怎么使用文章都会有所收获,下面我们一起来看看吧。前言今天把...
    99+
    2023-07-06
  • 怎么在Python中使用pdb操作内存
    这期内容当中小编将会给大家带来有关怎么在Python中使用pdb操作内存,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy...
    99+
    2023-06-14
  • 怎么在Python中利用pdb设置断点
    怎么在Python中利用pdb设置断点?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作