Python_11_调试篇之iPython

安装iPython

1.先下载针对Python 2.7的iPython5.x的压缩包

Python_11_调试篇之iPython_第1张图片

2.解压缩

$tar xvfz ipython-5.5.0.tar.gz

$cd 解压缩后的目录

$sudo python setup.py install (貌似是setupegg.py???)


或者使用第2种方法安装iPython:

先安装pip
sudo easy_install pip 
再用pip安装iPython
sudo pip install ipython 





如果报错就再安装下iPython的依赖:

如图所示:

Python_11_调试篇之iPython_第2张图片

Pygments-2.2.0.tar.gz		pickleshare-0.7.4.tar.gz
decorator-4.1.2.tar.gz		prompt_toolkit-1.0.15.tar.gz
ipython_genutils-0.2.0.tar.gz	ptyprocess-0.5.2.tar.gz
pathlib2-2.3.0.tar.gz		simplegeneric-0.8.1.zip
pexpect-4.3.1.tar.gz		traitlets-4.1.0.tar.gz



举其中一个例子

1.先百度搜索 python Pygments

Python_11_调试篇之iPython_第3张图片

2.下载下来,解压缩

4.cd 解压后的目录

5.sudo python setup.py install安装



现在正式进入iPython的调试篇:

按以下操作之后,每当程序抛出异常时会自动跳到 IPython Shell,而且和普通的IPython不同的是,

这个时候可以调用 p (即print), up(up stack), down(down stack) 之类的命令。

还能创建临时变量,执行任意函数。

这些都是可以实现的, 而且很简单,因为有了 iPython。
只要把以下代码保存为 `crash_ipy.py`
然后在要调试的项目代码某个地方 import crash_ipy 就可以了。

#-*- coding:UTF-8 –*-
#! /usr/bin/env python
#coding=utf-8
#!/usr/bin/python

import sys

class ExceptionHook:
    instance = None

    def __call__(self, *args, **kwargs):
        if self.instance is None:
            from IPython.core import ultratb
            self.instance = ultratb.FormattedTB(mode='Plain',
                 color_scheme='Linux', call_pdb=1)
        return self.instance(*args, **kwargs)

sys.excepthook = ExceptionHook()
比如故意写一个有异常的代码
#-*- coding:UTF-8 –*-
#! /usr/bin/env python
#coding=utf-8
#!/usr/bin/python


import crash_ipy

for x in xrange(1,10):
   if x == 5:
      print x/0
   else:
      print x
运行之后,可以看到提示并定位到了出错的那一行
Python_11_调试篇之iPython_第4张图片



 或者:

使用命令行中$ipython --pdb your_scripyt.py  效果也一样,如图所示

Python_11_调试篇之iPython_第5张图片

或者加断点,例如:

import pdb
pdb.set_trace()

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


或者:

pdb、ipdb已经近乎完美地融入了emacs,inferior shell的每一步调试命令都可以在另一个buffer里面跟踪源码。不论是%pdb下的异常触发,或%debug执行语句,或者源码中的pdb.set_trace(),都可以自动激活emacs的调试模式,超越ide的节奏有木有~


更逆天的功能是ipython自带的extension模块%autoreload,自动检查和重新加载修改过的源码,简直刷三观,调试神器有木有。


emacs下的ipython开发已经带来飞一般的动态体验,忍不住安利一下







ipdb(pdb)可以设置断点.单步调试.函数调试.查看当前代码.查看栈片段.动态改变变量的值等

Python_11_调试篇之iPython_第6张图片

使用 pdb 进行调试

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

表 1. pdb 常用命令

下面结合具体的实例讲述如何使用 pdb 进行调试。






你可能感兴趣的:(Python2.x)