zoukankan      html  css  js  c++  java
  • python学习笔记(六)——程序调试

    在我们平时编写程序时,常常会遇到各种错误,俗称BUG。而我们程序猿的工作常常需要对程序进行调试,也就是所谓的debug。

    程序调试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。而在 python 程序编写时,常常使用以下几种方法进行调试:

    1、使用print 方法,在程序运行的关键处打印出相关信息。	缺点:在程序发行时,需要去除这些调试用代码。
    2、使用assert机制,通过使用断言的方式,在程序错误时打印出相关信息。
    3、记录日志
    4、IDE自带的调试
    

    print调试

    print 函数可以打印运行中变量的值以及输出提示信息。
    我们可以在可能会发生错误的代码处写上提示,通过if判断或except等方法触发。或者使用print在运行时跟踪某个变量,输出运行状态数值变化等,进行调试。

    使用print调试真的是非常方便,简单粗暴,哪里不顺眼加一句print,在运行一遍就能看出效果。但使用print进行debug效率太低。
    一般我们在程序的可疑处使用print打印一下,从输出情况判断程序是否发生错误,如果程序中存在的可疑之处过多,或者程序代码过于庞大,显然在每个地方都加print是一件极其低效的事情。另外,在程序发行时还得清除所有多余的print语句,调试代价太大,效率也不高。

    使用断言

    assert(断言)用于判断一个表达式,如果表达式结果为 false 时触发异常。而结果为 True 则继续执行下一行语句。

    断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如我们的代码只能在 Linux 系统下运行,可以先判断当前系统是否符合条件。如果条件不满足则中断程序。

    ‘’‘
    该实例引用自 菜鸟教程 runoob.com
    ’‘’
    import sys
    assert ('linux' in sys.platform), "该代码只能在 Linux 下执行"
    

    使用assert进行判断,如果条件为 False 则中断程序并输出提示信息。

    assert 1>2 , "这是提示信息:错误 1 不小于 2"
    
    输出:
    Traceback (most recent call last):
      File "F:/untitled/python学习/断言.py", line 5, in <module>
        assert 1>2 , "这是提示信息:错误 1 不小于 2"
    AssertionError: 这是提示信息:错误 1 不小于 2
    

    另外可以通过 `try…except…`` 捕获错误信息

    try:
        assert 1>2 , "这是提示信息:错误 1 不小于 2"
    except AssertionError as e:
        print(e)
    
    输出:
    这是提示信息:错误 1 不小于 2
    

    记录日志

    如果说我们的程序已经发布无法得到客户运行后的错误信息,或者由于某些原因使用 print 或这 assert 的方式调试不太方便时,我们可以通过记录日志的方式,把每个错误的的信息记录进日志文件,我们通过分析日志文件便可以找到错误的原因,进而进行程序上的调整和优化。

    目前还没学会,Mark。以后补上

    另外,记录一个 logging.basicConfig 的配置。

    # 通过logging.basicConfig函数对日志的输出格式及方式做相关配置
    import logging
    logging basicConfia(level=logging .DEBUG,
    format='%(asctime)s 9%(ilename)l[ine:%(lineno)d] %(levelname)s
    %(message)s',
    datefmt=*'%a, %d %b %Y %H:%M:%S',
    filename='myapp.log',
    filemode='w')
    logging. debug(This is debug message')
    logging.info(This is info message')
    logging.warning('This is warning message')
    
    ./myapp.log文件中内容为:
    Sun, 24 May 2009 21:48:54 demo2 py[line.11] DEBUG This is debug message
    Sun, 24 May 2009 21:48:54 demo2 pyl[line.12] INFO This is info message
    Sun, 24 May 2009 21:48:54 demo2.pylie: 13] WARNING This is warning message
    
    

    IDE的集成开发环境

    Python IDE还挺多的,
    比如PyCharm,PyCharm 官方下载地址:http://www.jetbrains.com/pycharm/download/
    Sublime Text, Eclipse+Pydev等等。

    我比较推荐 PyCharm,之前也没用过别的IDE,但第一次使用PyCharm就觉得很不错,对我这个python 新人很友好。当然你可以根据自己的喜好来选择适合自己的 Python IDE。比如 vs code就不错,听说vs code已经可以支持可视化 debug 了,虽然目前只支持JavaScript/TypeScript ,不过项目维护者已经在讨论添加对 Python 的支持了。不知道以后能不能实现对 C/C++ 的支持。

    咳咳,扯远了,使用IDE调试非常简单,自己动手试试就会了,这里就不再赘述了。

    写完博客也去下一个 vs code 玩玩,最后附上vscode-debug-visualizer项目地址:https://github.com/hediet/vscode-debug-visualizer

  • 相关阅读:
    python中重要的模块--asyncio
    Mysql连接报错:1130-host ... is not allowed to connect to this MySql server如何处理
    驱动精灵扩展版(集成万能网卡驱动)无法自动识别网卡的解决方案
    ROS HTB限速失败原因分析和需注意事项
    按键精灵saystring无法使用的几种解决方案
    ESXI5-WIN2008R2安装域控以及额外域笔记
    centos如何使用utc时间
    NFS的安装以及windows/linux挂载linux网络文件系统NFS
    用命令行方式关闭CentOS防火墙
    CentOS6.4 上搭建NIS网络信息服务器
  • 原文地址:https://www.cnblogs.com/TaoR320/p/12680104.html
Copyright © 2011-2022 走看看