标签:
Python作为一门动态语言,解释器只会在运行之前检查代码的基本语法,不能进行更加详细的错误分析。例如,"引用未定义的变量", "传递了错误的参数"。这些错误只能在运行的时候被抛出。 静态代码分析 就是用来解决这样问题的技术,它试图在程序未运行之前对代码分析来检查一些可能的错误,避免在运行之后才发现,提升开发效率。
pip install 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)
准确的找出了,上段代码的问题:
dequeue
函数里面引用了未定义的queue
变量,实际上是应该使用self.queue
self.queue
变量未在构造函数__init__
内初始化。python -m pdb foo.py
你就能快速进入调试界面。pip install pudb
pudb fifoqueue_error.py
进入pudb之后,pudb暂停在程序的第一行代码处。"图形界面"有五个区域: 代码区、命令行区、变量区、栈区、断点区。
按下c字符(Continue),pudb会继续运行程序。在这里,由于代码错误,会抛出错误:
可以显示运行时异常的代码位置、本地变量值、栈。你可以在Command line中输入一些调试命令看到更多的你想要
pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。
命令 | 解释 |
---|---|
break 或 b 设置断点 | 设置断点 |
continue 或 c | 继续执行程序 |
list 或 l | 查看当前行的代码段 |
step 或 s | 进入函数 |
return 或 r | 执行代码直到从当前函数返回 |
exit 或 q | 中止并退出 |
next 或 n | 执行下一行 |
pp | 打印变量的值 |
help | 帮助 |
标签:
原文地址:http://www.cnblogs.com/wuqingzangyue/p/5749974.html