2009年4月2日星期四

今天比较顺利

晚上又做了一次性能测试,这次两个小时没有出现崩溃的情况,之前修改的一个隐患似乎起了作用。

看了PP的报告,昨天优化的目标基本达成(相比之下比较复杂的就不在这个版本里面做了)

另外,debugger功能又有了突破。我之前考虑watch一直有点麻烦,毕竟解析表达式、计算很罗嗦,代码很容易造成重复。如果不想重复又容易影响性能。今天突然想到了一个很简单的方法,就是在调试时,允许用户自己输入一段脚本,编译后作为一个伪函数插入到当前执行节点前。这样,不仅可以阅读上下文,还可以执行外部函数,又绕过了解析、计算这个环节。功能既强,实现还简单。

其中主要有两个问题需要考虑:一个是如何读取当前函数的局部变量和参数。我一开始采用的方法是定义一批宏,将宏指向栈里面的变量。但是这样有一个缺点,宏影响范围会超过我的预期(比如一个函数和变量重名,宏会将它们都替换)。后来想了一下,增加了一个debug context,在lex取词时先让debugger根据context翻译token,这样做起来就没有副作用了。

另一个问题就是嵌入的脚本可能会导致执行线程出错、或是删除执行线程。好在这方面driver都有过类似的处理,提供了足够多的钩子处理这些事件。

今天完成了所有的编码和调试,这意味着命令行的debugger已经到达了实用的阶段。很好。

没有评论:

发表评论