实现了个粗糙的调试器,总结阿总结

调试器终于有点眉目了,虽然还是只是个玩具.连写带参考别人拷贝的,一共8000多行,从来没搞过这么多代码的东西,而且是短时间的。这样看,以后自己写的小东西规模也会增大了,毕竟有第一次就会有第二次
对于大于2000行的以上的东西,一定先规划好程序流程和接口,否则最后写的就不知道是啥了,而且一定要深刻理解需求只有理解了需求,才能设计出较好结构,而实现只是水到渠成.
虽然每天都做笔记,实现一个功能前都先想想怎么写,在第一天写代码之前,已经做了十几页的笔记,并大概画了流程图.最后还是因为对某些功能的实现不是很理解,导致绕了不少弯路,比较郁闷。

通过这次项目还是积累了一些以后能用到的东西:
一个消息处理框架
命令行下界面线程与功能线程一起执行的经验
数据结构使用经验
体会到清晰的流程,逻辑简单的代码的好处


另:
有个好用自己又顺手的文本编辑器很重要阿,这是工作效率提高的保障.
代码的编写和修改我基本都是用的geany for windows来做的,因为功能简单够用,而且快捷键很舒服修改也直观.调试和工程管理是使用的vs2008。自己参考geany的帮助文件把windows sdk的头文件的tags文件给导进去了,可以有基本的api掉用意识了,不过还是很一般.这是唯一不满意的地方吧
虽然gtk在windows下表现一般,而且更新了新版本之后,打开多文件有点慢,不过确实很顺手,呵呵,赞一个

项目做的差不多了,把geany的代码svn回来,一共12W行的C代码……

说下未完成又不打算做的吧:
多内存断点未实现
内存断点跨页情况未处理
依附进程未实现
步入未判断到系统代码中的情况(可能不可读,挂掉)
日志(这个可耻的失败了…写了一天,本来打算写个多线程日志写入,搞了一天,同步还是没搞好,每10W条,总丢十条。不敢在这上面多耗费时间,回去慢慢写吧)


大体就这些了。
感觉最调试器最复杂了就是内存断点的逻辑处理
代码不多,但很绕,100多行写了一天

总计12天,代码总计8000行,有效代码6500行,刨去反汇编引擎用GOOGLE到的一个,不是自己写的,还有数据结构200行不是自己写的,每天300多行,效率还是偏低。主要是头5天写的,后来一直在改错、修缮,真是编码容易,除错难啊……

之前还写了个还算能用的纯C PE格式解析的代码,IAT、IMT都能解析,300多行。有空也贴上来

大概就这些吧,下一篇整理下实现中的问题。

posted @ 2010-09-08 23:03  飘啊飘  阅读(478)  评论(0编辑  收藏  举报