python调试工具

跟其他语言一样,使用打印日志调试是最基本的,但是python有一些工具库可以使得调试更为方便,像c++的gdb一样打断点,单步执行。

pdb

使用如下代码就相当于添加断点了:

import pdb
pdb.set_trace()

ipdb

pdb是python内置的,我们尝尝选用ipython作为交互终端,好处是漂亮的代码颜色,<Tab>补全提示,以及与Bash的混合使用。同样道理,ipdb相对于pdb的优势也正在于此,其实它就是对ipython的调用:

import ipdb
ipdb.set_trace()

rpdb

上面的两种方案要求有终端输出的情况下可行,有时候我们需要以后台形式执行python,此时是没有输出交互的,比如django开发,程序由uwsgi管理执行,标准输出已重定向,通常只能通过日志输出信息。这个时候我们就需要一个远程调试工具。

rpdb会开启一个socket连接,用于远程调试,默认端口是4444:

import rpdb
rpdb.set_trace(port=12345)

这样当程序被hang住之后,会监听该端口,可远程连接进行调试:

nc 127.0.0.1 12345

ripdb

rpdb只是pdb的远程版本,而ripdb就是将rpdb和ipdb的功能进行了整合,既有远程调试功能,又有漂亮的代码颜色:

import ripdb
ripdb.set_trace(port=12345)

如果还需要<Tab>自动补全功能,还需要对终端进行一下设置:

SAVED_STTY=`stty -g`; stty -icanon -opost -echo -echoe -echok -echoctl -echoke; nc 127.0.0.1 12345; stty $SAVED_STTY

 

发表于 2016年01月06日 10:22   评论:0   阅读:2199  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo