1
fqrouter2 2013 年 11 月 3 日 via Android
stackless python
greenlet pypy |
3
unionx 2013 年 11 月 3 日
systemtap or dtrace
|
4
bombless 2013 年 11 月 3 日
有一种做法是做语法分析,在需要的地方插入桩,然后运行这个结果来得到近似的效果
|
5
ruoyu0088 2013 年 11 月 3 日 排序函数是你自己写的吧,你在每条语句之后插入获取所有局部变量的locals()调用,并保存这条语句的行号和文本,当然这个过程可以用一个程序自动化。
执行一遍程序之后,你就有单步执行的所有信息了,然后对这些信息可视化就可以了。不需要真正地单步执行程序。 |
6
fay 2013 年 11 月 3 日
可以配合使用yield和send、next函数,send函数的返回值可以是locals()调用的结果,即中间变量。
|
7
9hills 2013 年 11 月 3 日 lz要的是不是这个效果:(可能需要爬墙)
http://www.pythontutor.com/ Open Source:https://github.com/pgbovine/OnlinePythonTutor/ |
8
tioover 2013 年 11 月 3 日
排序算法要可视化呈现,那么做一个类似List 的结构,在这个class 里面做手脚,比如说Insert 就是插入并且更新画面并且暂停。
|
10
Hualin OP @ruoyu0088 请问你所说的 "自动执行"是什么意思?是不是不用每句后面都加 local()?有种方法就让它单步推出 local?
我刚看完 Online Python Tutor, 里面的实现对我的作业来说有点 overkill。我想简化一下它的后端,也就是它的 debugger (继承自 bdb)。 但是自己实现一个简易的 debugger 来记录单步信息貌似还是比较难。而且我这核心程序是排序算法,有些 N^2 的算法的单步步奏太多,如果按照 前面我提到的那个 project 的做法全部把 单步信息存到 json 里,会很没效率。我想把重要的我选择的单步信息推送到 numpy (一个 python 数学库,对大型 array 的处理很快),然后在到前端做单步可视化。 |
11
mengzhuo 2013 年 11 月 4 日
import ipdb;ipdb.set_trace()
一次拥有,终生不忘 |