基本调试

静态代码分析

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 栏中。当调试进行到该变量所在的语句时,在该窗口中可以直接看到该变量的具体值。

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
























posted @ 2016-08-08 16:38  意发并行  阅读(326)  评论(0编辑  收藏  举报