zoukankan      html  css  js  c++  java
  • 基本调试

    静态代码分析

    Python作为一门动态语言,解释器只会在运行之前检查代码的基本语法,不能进行更加详细的错误分析。例如,"引用未定义的变量", "传递了错误的参数"。这些错误只能在运行的时候被抛出。 静态代码分析 就是用来解决这样问题的技术,它试图在程序未运行之前对代码分析来检查一些可能的错误,避免在运行之后才发现,提升开发效率。

    安装Pylint

    pip install pylint

    使用Pylint

    默认条件下,Pylint会同时分析错误信息和编码风格问题,这里就不讨论编码风格了,使用-E选项来只找出错误。

    pylint -E fifoqueue.py

    结果:

    ************* Module fifoqueue_error
    E:  5,20: Undefined variable 'threading' (undefined-variable)
    E: 18,18: Undefined variable 'queue' (undefined-variable)
    E: 15,19: Access to member 'queue' before its definition line 19 (access-member-before-definition)
    

    准确的找出了,上段代码的问题:

    1. 没有导入threading模块
    2. 第18行中,dequeue函数里面引用了未定义的queue变量,实际上是应该使用self.queue
    3. self.queue变量未在构造函数__init__内初始化。


    但是pdb最好能掌握,因为在任何环境下,这个调试器都是可以用的,通过python -m pdb foo.py你就能快速进入调试界面。

    安装pudb

    pip install pudb
    

    进入调试界面

    pudb fifoqueue_error.py
    

    进入pudb之后,pudb暂停在程序的第一行代码处。"图形界面"有五个区域: 代码区、命令行区、变量区、栈区、断点区。

    出错界面

    按下c字符(Continue),pudb会继续运行程序。在这里,由于代码错误,会抛出错误:

    可以显示运行时异常的代码位置、本地变量值、栈。你可以在Command line中输入一些调试命令看到更多的你想要


    pdb调试:
    pdb.set_trace()
    b 加入断点
    cl 清除断点

    加入到需要加断点的代码处,运行时,执行在此处即可中断,单步、继续、查看变量值等功能都有,不妨help下


    运行当前程序
    :Ctrl+Shift+F10

    在settings里面搜索可以找到相应设置


    在Console Font 和python当中设置关键字颜色

    Ctrl+/  和 三个点都是注释


    在pycharm安装库的时候可以自己选择从哪里下载


    shift+F9断点调试


    引用模块包


    生成变量


    查看某个值

    step over执行下一行

    stop into 进入当前对象里面的方法,最后返回当前方法出来执行下面的
    更上面差不多

    跳到下一个断点



    和watch一样


    pycharm调django很慢

    使用 pdb 进行调试

    pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。

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



    图片示例
    Pycharm 支持表达式求值,可以通过选中该表达式,然后选择“Run”->”Evaluate Expression”,在出现的窗口中直接选择 Evaluate 便可以查看。

    设置断点的方法非常简单

    如果要动态的监测某个变量可以直接选中该变量并选择菜单”Run”->”Add Watch”添加到 watches 栏中。当调试进行到该变量所在的语句时,在该窗口中可以直接看到该变量的具体值。

    多线程调试:对于多线程程序来说,通常会有多个线程,
























  • 相关阅读:
    堆和栈的区别
    .net中类(class)与结构(struct)的不同
    CTS、CLS、CLR
    C#和.Net的关系
    装箱(boxing)和拆箱(unboxing)
    三层架构
    属性和public字段的区别(调用set方法为一个属性设值,然后用get方法读取出来的值一定是set进去的值吗?)
    override与重载(overload)的区别
    C#中的委托是什么?事件是不是一种委托?事件和委托的关系。
    json转树状菜单栏
  • 原文地址:https://www.cnblogs.com/wuqingzangyue/p/5749974.html
Copyright © 2011-2022 走看看