掌握Python系统管理-调试和分析脚本1-debugging

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

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

涉及内容:

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

debugging

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

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

参考资料

Python调试技术

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

图片.png

异常处理

参考 https://china-testing.github.io/python3_crash_ch8.html

调试工具简介

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)
        return
if __name__ == '__main__':
    Student(5).print_std()

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

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

要继续调试,请在 ( 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)<module>()
-> class Student:
(Pdb) continue
0
1
2
3
4
The program finished and will be restarted
  • 脚本中开启调试
import pdb

class 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) continue
0
> /home/andrew/code/meil/code/Mastering-Python-Scripting-for-System-Administrators-/Chapter02/pdb_example.py(9)print_std()
-> pdb.set_trace()
(Pdb) continue
1
> /home/andrew/code/meil/code/Mastering-Python-Scripting-for-System-Administrators-/Chapter02/pdb_example.py(10)print_std()
-> print(i)
(Pdb) continue
2
...
相关文章
|
5月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
5月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
5月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
5月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
自然语言处理 算法 Python
|
自然语言处理 算法 索引

推荐镜像

更多