首页
社区
课程
招聘
[原创]source insight分析WRK源码
发表于: 2010-6-24 18:21 22059

[原创]source insight分析WRK源码

2010-6-24 18:21
22059

source insight是一个出色的程序编辑器和代码浏览器,利用好它会给编写和阅读源代码带来极大的方便。想要配置好source insight可不是一件轻松的事,我比较喜欢深色背景有利于保护眼睛,但同时也必须更改代码颜色来匹配背景色,source insight的很多窗口、选项都可以指定字体、颜色,实在让人犯晕!最麻烦的是源码窗口的配置了,这里简单提一下,source insight的最终配色是由Style Properties决定的(右键菜单-->Style Properties)



左边一栏是风格名,选中的是当前光标下的风格名,这些风格之间是有继承关系的,可以看到有很多=号,这代表继承了父风格(Parent Style),pick则是让你单独设置,最右边还可以导入、导出、添加风格等。所有风格最终由Default Text继承而来的,Font Name是灰的,它由Document Options(Alt+T)中的当前文档类型 Screen Fonts决定的(所以不同的文件类型,如C,Python,Java它们的字体可以不同的)。Background是由 Options-->Preferences-->Colors中的Window Background决定的,其实Default Text的背景就是源码窗口的背景。Foreground也一样,pick了它等于设置了 Options-->Preferences-->Colors中的Default Text。我也晕了,汗……

正是这些风格让source insight五彩缤纷:



还要提一句,source  insight中还有一个Draft View(Alt+F12),在这个模式中会忽略Style Properties中字体部分设置,统一改用Draft View(见左边栏)中设置的字体。我制作了一个背景为深黑色,字体为Fixdays的配置文件(包含其它设置)让大家下载:http://download.csdn.net/source/2480193

罗嗦了半天,WRK还没说呢,关于如何使用请看中文官网的文章 。source insight分析完WRK后大家肯定会发现连IRP、DEVICE_OBJECT这样的结构都没法解析,其实罪魁祸首就是那些函数宏,比如_IRP前面的DECLSPEC_ALIGN(),如果用我前面的配置文件调过颜色的话一眼就可以看出,source insight把它当成了Declare Function了,这些宏大多起修饰作用并无实质影响,但一样的宏在MS的代码中数不胜数(如非vc6的crt,头文件,连printf都解析不来)。可以看看这个帖子http://topic.csdn.net/u/20100613/16/b32fc799-c7f2-4648-9d91-cc933f9ffeb8.html ,我一开始以为是BUG,但source insight提供了解决方案,那就是Token Macro。Token Macro就是source insight的预处理器,它可以像C预处理器那样展开宏,正是为了对抗那些混淆source insight的宏而设计的。Token Macro是一个以.tom结尾的文件,对C/C++来说是C.tom,只要把它放在source insight创建工程的目录下,就可以立马起作用(不用重新parse一遍,不过有些时候还是parse一遍好),它会跟程序目录下的全局C.tom结合去展开宏。Token Macro编写非常简单,跟#define语法差不多(但没它强大)。大家看看我针对WRK做的C.tom就明白了,由于大多数函数宏只起修饰作用不会影响代码的解析,所以我把大多数宏做成了空宏。
下载:http://download.csdn.net/source/2480426

另外条件编译也是一个可能让source insight分析出错的地方,默认它会分析所有的条件分支。但碰到这样的情形就糟糕了:

   1. void MyFunc  
   2. #ifdef XYZ  
   3.     (int param1, int param2)  
   4. #else  
   5.     (long param1, long param2)  
   6. #endif  
   7. {  
   8.     …  
   9. }  
  10. void DoThing(  
  11.     int param1,  
  12. #ifdef ABC  
  13.     int param2)  
  14. #else  
  15.     int param2, param3)  
  16. #endif  

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (14)
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
但我觉得用Doxgen会更好一点
2010-6-24 22:01
0
雪    币: 267
活跃值: (24)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
格式有点问题,还是去LZ博客上看算了~
2010-6-25 11:36
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
额,我看不出有问题啊
2010-6-25 16:06
0
雪    币: 49
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
http://hi.csdn.net/attachment/201006/23/0_1277261871eA45.gif 显示的图片都是这个
这个就是问题啊
2010-6-26 21:37
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
晕,我在别人电脑上看确实没有图片,但单独访问图片是可以的啊。怎么回事
2010-6-27 13:26
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
csdn的图片不能外链吧,看不到图片,偶还是到楼主博客看算了...
2010-7-1 08:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼主附件中缺少TabSiPlus
http://www.winmsg.com/cn/tabsiplus.htm

如果楼主能够在做个背景色为苹果绿(199 237 204)造福大家就好。
2010-7-1 11:11
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
恩,http://download.csdn.net/source/2451673中有,包含了另一个配色。
2010-7-1 11:55
0
雪    币: 348
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
图看不到
配色器确实不错!
2010-7-5 15:06
0
雪    币: 95
活跃值: (541)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
lz应该尝试下slickedit的
比si解析能力强多了,还是多平台的
2010-7-5 21:08
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
12
slickedit我以前也看过,在linux上对中文支持不好,windows下还行。要启用Symbol Coloring颜色才丰富,还有预处理(preprocess)的问题也是存在的,不过也可以手动添加解决。另外像SI的Relation Window中各个函数层次关系图也是没有了。
2010-7-7 19:48
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
13
doxygen确实不错,但默认预处理器也不展开宏,必须手动打开。
2010-7-8 15:26
0
雪    币: 53
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
放到哪个目录下没看明白.....

我的WRK项目是在这个目录

D:\wrk_230M\WindowsResearchKernel-WRK\WRK-v1.2\base\ntos\

于是我放到这个目录下..

但是IPR还是没解析出来..
2010-7-25 00:30
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
15
2010-7-26 12:17
0
游客
登录 | 注册 方可回帖
返回
//