文档章节

自己实现一个Python调试器

go-skyblue
 go-skyblue
发布于 2016/03/25 20:28
字数 250
阅读 224
收藏 2

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运行一句,并且会打印出当前行的内容,是不是很简单呀 :)

© 著作权归作者所有

go-skyblue

go-skyblue

粉丝 90
博文 50
码字总数 31921
作品 5
杭州
程序员
私信 提问
用VScode代码调试Python

Python扩展支持许多类型的Python应用程序的调试,包括以下一般功能: 观看窗口 评估表达式 当地人 参数 扩大孩子 断点 条件断点 暂停(进入)正在运行的程序 自定义启动目录 要熟悉这些常规功...

whltian
01/04
85
0
使用 Python 进行游戏脚本编程 [翻译]

翻译自 GDC 2002 上 Bruce Dawson 的 Game Scripting in Python 简单介绍 Python 作为游戏脚本语言的优势 原文:Game Scripting in Python 作者:Bruce Dawson 译文:使用 Python 进行游戏脚...

晨曦之光
2012/05/23
7.2K
2
优秀开发者必备技能包:Python调试器

作者 | Roky0429 来源 | Python空间(ID:Devtogether) 写在之前 不管是之前搞 acm 用 c/c++ 写算法还是后来用 Python 写代码,我发现在程序出现问题的时候,大多数人习惯性的用 print 函数打...

AI科技大本营
02/25
0
0
如何用Python调试器修复代码?

使用Python调试器 调试器是一个工具,它允许你打开应用程序的内部以找出需要修复的内容。 你可以查看变量和调用堆栈,设置条件断点,逐行扫描源代码,并执行需要执行的操作。 在调试时Pytho...

实验楼
2018/06/27
0
0
Python 集成开发环境完全测评与分析

David Mertz 介绍了 6 种 Python 集成开发环境,并比较了其特性、平台和稳定性。他发现 -- 或许只是无意中对开放源代码模块的测试 -- 免费产品似乎都比商业产品优秀。 前几周,我有幸对一些 ...

红薯
2009/03/16
10.4K
8

没有更多内容

加载失败,请刷新页面

加载更多

html2canvas 生成的图片变模糊解决方案

需求: 背景图片和二维码还有用户微信头像生成一张图片,可供用户下载。打开页面的时候就是一张图可以保存,html2canvas插件即可实现效果,效果是实现了,但是很郁闷,图片模糊了。。。。 为...

前端老手
20分钟前
4
0
语音翻译器在线翻译语音

对于英语不好的朋友来说,如果出国旅游,多多少少都会使用到翻译软件。通过在线翻译的方式,方便彼此的沟通交流。那么,有朋友就在问哪个英语翻译软件最准确?下面就来和大家一起分享下这个简...

401恶户
21分钟前
5
0
国内25家滤波器公司排名

国内做滤波器的企业都有哪些?哪些企业做滤波器是比较知名的?国内滤波器企业排名如何?以下是解优人才网小编给大家的分享,国内前25家做滤波器的企业详细信息。 1、武汉凡谷电子技术股份有限...

猎头悬赏平台
25分钟前
6
0
即时配送,不再只是巨头的战场

9月4日,第十届中国电子商务物流大会暨2019中国同城即时物流行业峰会于杭州召开。会上出现了蜂鸟即配、达达-京东到家、美团配送、点我达、闪送等一众即时配送行业中的知名企业的身影。 在艾媒...

喵二狸
26分钟前
5
0
Moto G 2014 LTE Root

[TOC] 下载moto专用mfastboot mfastboot-v2.zip 下载对应设备的twrp 我的是这个版本 Moto G 2014 LTE thea 刷入twrp # 1. 开启USE调试# 2. 允许OEM解锁# 3. 查看设备adb devices# 4. 进f...

yeahlife
29分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部