SNav & SI & Code Reading
2009-11-19 16:33:47| 分类:
R&D
| 标签:
|举报
|字号大中小 订阅
SNav的代码窗口有6个标签页,它们分别是
'Edit''Hierarchy''Class''Xref''Retriever''Grep'
其中,'Edit'区是代码显示和修改的区域,是工作的主要区域;'Hierarchy'和'Class'是C++代码的组织工具;'Xref'是最强大的一个工具,它会把一个函数中的所有用到的变量,调用的函数,用到的结构全记录并展现出来;'Retriever'也是一个非常有用的工具,用于把一个库代码包中的所有定义的符号列出来,并记录相应的属性;'Grep'用于查找某一个符号,可指定搜索的范围,既可全局查找也可部分文件查找。
阅读代码时常用到的一些键值组合:
Ctrl+leftarrow | rightarrow | uparrow | downarrow 以词的形式移动光标
Ctrl+Alt+leftarrow | rightarrow | uparrow | downarrow 以词的形式移动光标并选择走过的区域
Ctrl+Shift+D 查看选定符号的声明
Ctrl+Shift+I 查看选定符号的定义
SI的列操作功能比较弱,但不等于没有。先按下Alt键,接着就可用鼠标进行列选择,然后就可以删除指定的列。
# Edit Condition
很多代码当其中有大量的预编译定义。在阅读这样的代码时最痛苦的是不能简单判断程序实际执行的代码分枝。大量分枝同时存在,常常会混淆,如果确定我们当前分析的是某种条件,那么可以选择上下文件菜单的【Edit Condition】选项,在弹出的Conditional Parsing窗口中把预编译宏的值设置为True,那么#ifdef ...就等价于#if 1了,相当注释掉了#else分枝的代码。反之,设置为False时,则注释掉#ifdef ...分枝的代码。
用Source Insight追踪流程,用SourceNavigator查看类层次结构
看代码先以走通一个最精简的流程为主,再是模块之间的组织、调用关系或是信息交互,对整体框架有一定的认识,忽略细节。
然后最好用debug的方式,把测试的数据验证一遍,那么你会对实现细节将有较为深刻的认识
评论这张
转发至微博
转发至微博
评论