Python有本身的调试器 pdb, 可是如何本身实现一个简单的呢。其实并不复杂,调试器的精髓就是把每一步的执行都慢下来。python
简单的调试器,能够用很简单的代码插入来实现。json
好比,一个python的代码可能长这个样子tcp
import os print os.getcwd() print 'END'
而后把代码变成这样debug
debug_trace() import os debug_trace() print os.getcwd() debug_trace() print 'END'
在每一个代码的前面插入一行代码,整个代码的运行就受咱们控制了调试
最终实现出来的解析器是这样的code
#!/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运行一句,而且会打印出当前行的内容,是否是很简单呀 :)orm