博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
掌握Python系统管理-调试和分析脚本1-debugging
阅读量:5756 次
发布时间:2019-06-18

本文共 2909 字,大约阅读时间需要 9 分钟。

调试和分析在Python开发中发挥着重要作用。 调试器可帮助程序员分析完整的代码。 调试器设置断点,而剖析器运行我们的代码,并给我们执行时间的详细信息。 分析器将识别程序中的瓶颈。我们将了解pdb Python调试器,cProfile模块和timeit模块来计算Python代码的执行时间。

涉及内容:

  • Python调试技术
  • 错误处理(异常处理)
  • 调试工具
  • 调试基本程序崩溃
  • 分析和计时程序
  • 使程序运行得更快

debugging

调试是解决代码中出现阻止软件正常运行问题的过程。

Python调试器设置条件断点并可一次调试一行源代码。我们将使用Python标准库中的pdb模块调试我们的Python脚本。

参考资料

  • 谢谢点赞!

Python调试技术

  • print()语句。
  • logging:这类似于print语句,但具有更多上下文信息。
  • pdb调试器:常用的调试技术。在解释器和程序内从命令行使用pdb。
  • IDE调试器:IDE具有集成调试器。它允许开发人员执行他们的代码,然后开发人员可以在程序执行时进行检查。比如windide中的调试菜单:

图片.png

异常处理

参考

调试工具简介

Python支持许多调试工具:

  • winpdb
  • PyDev的
  • pydb
  • pdb
  • gdb
  • pyDebug

pdb模块用于调试Python程序。 Python程序使用pdb交互式源代码调试器来调试程序。 pdb设置断点并检查堆栈。

现在我们将了解如何使用pdb调试器。有三种方法可以使用此调试器:

我们将创建一个pdb_example.py脚本,并在该脚本中添加以下内容:

class Student:    def __init__(self, std):        self.count = std    def print_std(self):        for i in range(self.count):            print(i)        returnif __name__ == '__main__':    Student(5).print_std()

以此脚本为例学习Python调试,我们将看到如何详细启动调试器。

  • 交互式执行
$ python3Python 3.6.7 |Anaconda, Inc.| (default, Oct 23 2018, 19:16:44)[GCC 7.3.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import pdb_example>>> import pdb>>> pdb.run('pdb_example.Student(5).print_std()')> 
(1)
()(Pdb)EOF b cl cont disable exit interact list next quit retval source unalias upa break clear continue display h j ll p r run step undisplay walias bt commands d down help jump longlist pp restart rv tbreak unt whatisargs c condition debug enable ignore l n q return s u until where(Pdb) continue01234

要继续调试,请在 ( Pdb )提示符后输入continue,然后按Enter键。如果你想知道我们可以在这里使用的选项,那么在 ( Pdb )提示后按两次Tab键。注意windows下按键可能会无效。

  • 交互式加载pdb模块
$ python3 -m pdb pdb_example.py> /home/andrew/code/meil/code/Mastering-Python-Scripting-for-System-Administrators-/Chapter02/pdb_example.py(1)
()-> class Student:(Pdb) continue01234The program finished and will be restarted
  • 脚本中开启调试
import pdbclass Student:    def __init__(self, std):        self.count = std    def print_std(self):        for i in range(self.count):            pdb.set_trace()            print(i)        return    if __name__ == '__main__':    Student(5).print_std()

执行:

$ python3 pdb_example.py> /home/andrew/code/meil/code/Mastering-Python-Scripting-for-System-Administrators-/Chapter02/pdb_example.py(10)print_std()-> print(i)(Pdb) continue0> /home/andrew/code/meil/code/Mastering-Python-Scripting-for-System-Administrators-/Chapter02/pdb_example.py(9)print_std()-> pdb.set_trace()(Pdb) continue1> /home/andrew/code/meil/code/Mastering-Python-Scripting-for-System-Administrators-/Chapter02/pdb_example.py(10)print_std()-> print(i)(Pdb) continue2...

转载地址:http://vwtkx.baihongyu.com/

你可能感兴趣的文章
linux 死机分析
查看>>
BOM
查看>>
LeetCode:Nim Game - 尼姆博弈
查看>>
iOS: Block的循环引用
查看>>
mysql实战02 | 日志系统:一条SQL更新语句是如何执行的?
查看>>
ECC椭圆曲线详解(有具体实例)
查看>>
关于WechatApp学习总结
查看>>
Linux常见命令(二)
查看>>
PyCharm切换解释器
查看>>
jmp far ptr s所对应的机器码
查看>>
css详解1
查看>>
【转载】Presentation at from Yoshua Bengio
查看>>
MySQL类型转换
查看>>
HashSet HashMap 源码阅读笔记
查看>>
变量声明提升1
查看>>
轻量级的Java 开发框架 Spring
查看>>
JS之路——浏览器window对象
查看>>
Chrome教程(二)使用ChromeDevTools命令菜单运行命令
查看>>
数据结构及算法基础--快速排序(Quick Sort)(二)优化问题
查看>>
你对position的了解到底有多少?
查看>>