pdb:

首先来说Python里内建的调试器,pdb。它利用一个简单的命令行界面,还有很多你在用调试器时用得上的功能。帮助系统能为你指出你能运行的命令,比如单步调试代码,操纵调用栈和设置断点。

一些它缺少的功能:按tab能让本地变量自动补全和让代码和栈追踪更好看的配色和布局。

不管你最后决定使用哪种调试器,pdb是值得你花时间了解它的,有两个原因:1)它在Python里总是可用的 2)很多其他的调试器的功能是pdb的超集,先学pdb能让你更快的学习其他的调试器。

总之,如果有更好的还是用别的调试器吧。

ipdb:

最后一个就是iPython里的ipdb。就像它的 *pdb 的兄弟们,它的界面是一个简单的命令行并且它的帮助系统是个非常值得深入研究的地方。让这货与众不同的是它使用了一个iPython shell,所以所有的tab 完成和对象反射的功能都用,能帮你发现究竟发生了什么。把这些与很棒的语法高亮和一个拥有最好的格式化的where命令结合起来,就组成了一个干掉bug 的完美工具。

总结:这是最棒的一个也是本人的最爱。

我会提到,根据情况,我切换到pudb。它确实在浏览代码是如何运行方面是最棒的(比如当你必须钻研一个除了毛病的第三方库)。而我为什么最倾向于 ipdb,是因为大部分时候我对代码都很熟悉,并不需要一个大图片。我需要知道在一个指定的函数里是什么状态。把它们结合起来,就是超级超级NB的东西 啦!

如果你安装了ipdb,直接运行:

$ ipython ii.py --pdb

会在设置断点的地方或异常发生的地方自动进入 ipdb。

代码里设置断点的方法:

import os
import sys
import ipdb # 引入 ipdb, 不能引入 pdb,否则直接进入pdb调试环境。 if os.system("pip freeze | grep wheel"):
ipdb.set_trace() # 设置断点
print("wheel not installed.\nUse `pip install wheel`.\nExiting.")
sys.exit()

pudb:

$ pip install pudb

这个调试器里最明显的亮点就是它在终端里融合了一个迷你图形界面。这很正确,这不是一个分开的窗口,这是在终端里面。除了一组用于强调的默认颜色(它能够定制或选择一组默认的主题),这在调试器的交互上是一个新颖的尝试。

左边的面板显示当前文件的代码(或者你在栈里上下移动的其他文件)。导航栏非常棒,包含箭头键(以及’hjkl’对喜爱vim的群众),搜索,并且 能用模糊查询打开其他的模块。能把这些简单的行为用一个快捷键结合起来执行光标位置的代码,并且有非常直观和友好的方式来单步调试程序。当然,pudb仍 然提供了正常的断点和单步命令使你能随心所愿地控制代码的执行。

在右边,有几个面板来追踪当前的本地变量,栈,和存在的断点。这在你键入 locals(),whereh或者用tab完成来反射当前框架时与典型的终端调试器非常不一样,

这个调试器的另一个优点是它支持事后分析。当你命中一个异常,调试器会用一个很快的键来提示你这个异常。它也能让你直接跳到发生了异常的那一行,同时能让栈和变量保持完好。

总结:拥有这堆调试器里最好的用户体验;对于栈追踪特别有用。

pdb、ipdb常用命令:

命令 解释
break 或 b 设置断点 设置断点
continue 或 c 继续执行程序
list 或 l 查看当前行的代码段
step 或 s 进入函数
return 或 r 执行代码直到从当前函数返回
exit 或 q 中止并退出
next 或 n 执行下一行
pp 打印变量的值
help 帮助

在调试的时候动态改变值

[root@rcc-pok-idg-2255 ~]# python epdb2.py
> /root/epdb2.py(10)?()
-> b = "bbb"
(Pdb) var = "1234"
(Pdb) b = "avfe"
*** The specified object '= "avfe"' is not a function
or was not found along sys.path.
(Pdb) !b="afdfd"
(Pdb)

pdb 调试有个明显的缺陷就是对于多线程,远程调试等支持得不够好,同时没有较为直观的界面显示,不太适合大型的 python 项目。而在较大的 python 项目中,这些调试需求比较常见,因此需要使用更为高级的调试工具。接下来将介绍 PyCharm IDE 的调试方法 .

调试Python代码的工具的更多相关文章

  1. Python代码统计工具

    目录 Python代码统计工具 声明 一. 问题提出 二. 代码实现 三. 效果验证 Python代码统计工具 标签: Python 代码统计 声明 本文将对<Python实现C代码统计工具(一 ...

  2. [置顶] 如何在Python IDLE中调试Python代码?

    好久没有用Python了,居然忘记了怎么在Python IDLE中调试Python代码.百度了一下,然后还是写下来吧,以免以后又忘记了. 1. Set break point in the sourc ...

  3. 【转载】PDB命令行调试Python代码

    转载自这里. (博主按:PDB调试python代码和用GDB调试c++代码很类似) 你有多少次陷入不得不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇到上述境地的次数比你想要的还要多.然而, ...

  4. Python代码分析工具

    Python代码分析工具:PyChecker.Pylint - CSDN博客 https://blog.csdn.net/permike/article/details/51026156

  5. python代码检查工具pylint 让你的python更规范

    1.pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅 ...

  6. Python - 调试Python代码的方法

    调试(debug) 将可疑环节的变量逐步打印出来,从而检查哪里是否有错. 让程序一部分一部分地运行起来.从核心功能开始,写一点,运行一点,再修改一点. 利用工具,例如一些IDE中的调试功能,提高调试效 ...

  7. 在Linux下调试Python代码的各种方法

    这是一个我用于调试或分析工具概述,不一定是完整全面,如果你知道更好的工具,请在评论处标记. 日志 是的,的确,不得不强调足够的日志记录对应用程序是多么的重要.您应该记录重要的东西,如果你的记录足够好的 ...

  8. 使用pycharm远程调试python代码

    使用 pycharm 进行 python 代码远程调试 pycharm 的远程调试是从远程机器连接到本地机器,需要在远程机器的py文件中指定本地机器的IP和端口. 远程机器上,通过easy_insta ...

  9. python 代码检测工具

    对于我这种习惯了 Java 这种编译型语言,在使用 Python 这种动态语言的时候,发现错误经常只能在执行的时候发现,总感觉有点不放心. 而且有一些错误由于隐藏的比较深,只有特定逻辑才会触发,往往导 ...

随机推荐

  1. 第一篇 ERP是什么?-从道的层面浅谈我的理解

    世界上称为ERP软件的软件很多,国外的有SAP,ORACLE,国内的有金蝶,用友,浪潮.这些由不同的厂商开发制作的软件总有其软件适用的场合.这个场合就是企业,而且是市场经济中的企业.个人是不会购买ER ...

  2. [HDOJ2546] 饭卡 (01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 先找出最贵的那个菜,这个菜一定是最后买的那个.然后再在前n-1个菜里做01背包.找出不超过m-5 ...

  3. 总结Selenium自动化测试方法(六)常见的异常错误处理

    六.常见的异常错误处理 NoSuchElementException: Message: Unable to locate element: {"method":"xpa ...

  4. java I/O总结

    IO是非常重要的一块,但通常又被人们所忽视,这里希望能有个很清晰的介绍.自己学习的同时希望能够给别人带来一些帮助,对文章中用到其他作者(已经给出了链接)的图片在这里表示感谢! IO的分类 java I ...

  5. some resource favor

    http://www.moxiemanager.com/getit/ : picture file manage with blur 可以和Tinymce结合使用完美实现WYSIWYG的效果 http ...

  6. HDU 1422 重温世界杯

    题目中说只需按照所给顺序,不论起点,输出能连续旅游的最多的城市 就是不论起点这句,我就卡住了.. 看了别人的题解,循环个2n-1次便是把所有的起点都考虑进去了. 更详细的解释在代码的注释里. //#d ...

  7. BZOJ 4636 蒟蒻的数列

    二分写错了血T..... 线段树标记永久化. #include<iostream> #include<cstdio> #include<cstring> #incl ...

  8. php 在函数内引用全局变量 讲解引用

    <?php $var1 = "Example variable"; $var2 = ""; function global_references($use ...

  9. Spark快速入门(1)

    1 安装Spark 首先,到 https://spark.apache.org/downloads.html 选择最新的 Spark 版本和 Hadoop 版本(实际上我们暂时用不上 Hadoop,所 ...

  10. XE7 - 程序图标及启动画面图片的注意事项

    还是继续昨晚写的,年前已经解决了这个问题,现在补记下.启动画面失真是本篇笔记的重点.搜索了很多文章,基本上大同小异,几乎都没怎么提及启动画面失真的问题.不知道是不是我的操作不对头,. Project ...