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