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

  • 相关阅读:
    取得窗口大小和窗口位置兼容所有浏览器的js代码
    一个简单易用的导出Excel类
    如何快速启动chrome插件
    网页表单设计案例
    Ubuntu下的打包解包
    The source file is different from when the module was built. Would you like the debugger to use it anyway?
    FFisher分布
    kalman filter
    Group delay Matlab simulate
    24位位图格式解析
  • 原文地址:https://www.cnblogs.com/TaoR320/p/12680104.html
Copyright © 2011-2022 走看看