自己实现一个Python调试器

Python有自己的调试器 pdb, 但是如何自己实现一个简单的呢。其实并不复杂,调试器的精髓就是把每一步的执行都慢下来。

简单的调试器,可以用很简单的代码插入来实现。

比如,一个python的代码可能长这个样子

import os

print os.getcwd()
print 'END'

然后把代码变成这样

debug_trace()
import os

debug_trace()
print os.getcwd()
debug_trace()
print 'END'

在每个代码的前面插入一行代码,整个代码的运行就受我们控制了

最终实现出来的解析器是这样的

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

import json
import time


def interpreter(*args):
    print 'I:', args
    time.sleep(0.5)

lineno = 0
code = ''

for line in open('simple-tcp-proxy.py'):
    lineno += 1
    contain_code = False
    if line.strip() and not line.strip().startswith('#'):
        contain_code = True
    if contain_code:
        code += 'interpreter({}, {})\n'.format(lineno, json.dumps(line.strip()))
    code += line

exec(code, {'interpreter': interpreter})

效果就是代码的速度变成了每 0.5s运行一句,并且会打印出当前行的内容,是不是很简单呀 :)

转载于:https://my.oschina.net/goskyblue/blog/647538

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值