玩转LinuxIT在线课程我的Python自学之路

Python调试终端

2016-12-09  本文已影响244人  fasionchan

后端服务程序开发运营过程中,难免会遇到一些BUG疑难杂症,是日志输出等调试手段无法定位的。
如有有一个工具,可以连上服务程序,查询服务中间状态或者修改程序变量,势必加速问题定位及解决。

本模块就是您想要的工具~

安装

模块代码已经在github上开源:libase.server.console,可以直接把代码clone下来安装。

$ git clone https://github.com/fasionchan/libase.git
$ cd libase
$ python setup.py install

当然了,libase也已经发布到PyPI上了。因此,更方便的安装方式是使用pip

pip install libase

服务接入

需要远程调试的程序可以用start_console_server快捷启动一个远程调试终端服务。
然后,使用pyconsole命令便可以连上该程序,并初始化一个Python控制台用于调试了。

import time

from libase.server.console import start_console_server

counter = 0

start_console_server()

while True:
    print counter
    counter += 1
    time.sleep(1)

例子是一个计算程序,使用start_console_server接入远程调试终端服务,端口为默认值4444

连接调试

libase提供一个用于连接远程调试终端的程序pyconsole,以访问上述程序为例:

$ pyconsole 4444
Python 2.7.3 (default, Jan  2 2013, 13:56:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(ConsoleProxy)
>>> print main.counter
93
>>> main.counter = 0
>>> print main.counter
1
>>> print main.counter
2

注意到,默认已经将进程的__main__模块引入到当前名字空间,名为main,其效果等同于在pyconsole中执行import __main__ as main

高级用法

接口文档

start_console_server

start_console_server(port=4444, addr='localhost', 'code'='')

接入远程调试终端服务,返回一个ConsoleServer对象。

run_console_proxy

run_console_proxy(port=4444, addr='localhost')

以给定地址端口信息,连上接入远程调试终端的服务,并启动一个Python控制台。

工具命令

pyconsole

用法:pyconsole [port] [addr]

该命令,只是把run_console_proxy命令化,实现如下:

import sys
import rlcompleter

from libase.server.console import run_console_proxy

if __name__ == '__main__':
    run_console_proxy(*sys.argv[1:])
上一篇下一篇

猜你喜欢

热点阅读