利用Eclipse CDT 阅读C/C++代码

<!-- [if !mso]> <mce:style><! v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} --><!-- [endif]--><!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning /> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL /> <w:BalanceSingleByteDoubleByteWidth /> <w:DoNotLeaveBackslashAlone /> <w:ULTrailSpace /> <w:DoNotExpandShiftReturn /> <w:AdjustLineHeightInTable /> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:UseFELayout /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <mce:style><! /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} --><!-- [endif]-->

常见阅读代码的工具有 , visual c++, visual studio + va(visual assistant), 以及 source insight, 这几个功能强大的收费软件 , 目前用得非常多 , 尤其是 Source Insight( 以下简称 SI), 是一个不错的跨平台的软件 . 今天推荐的 Eclipse C++ 版本 , 同样也是一个优秀的开源阅读代码的工具 , 其优越性有甚于 SI, 表现在以下几点 .

1. 支持正则表达式快速定位源文件 (SourceInsight 不支持快捷通配符 )

2. 快速发现类之间的继承关系 , 并图形化显示 (vs2005 sourceInsight 无此功能 )

3. 快速找到函数间的调用关系 (SourceInsight 无此功能 ).

4. 其它 SourceInsight 提供的功能基本都支持得不错 .

5. 开源并且免费

6. 跨平台软件

首先展示一下这几大不错的功能 .

1. 支持正则表达式定位资源文件 .

利用Eclipse CDT 阅读C/C++代码

如图 , 支持正则表达式 ( * 通配符 ) 的方式查询文件 ( 快捷键 ctrl+shift+R).

2. 快速发现类之间的继承关系 , 并图形化显示

利用Eclipse CDT 阅读C/C++代码

如图 : 选择类名称 , 然后按 (ctrl+T)

3. 快速找到函数间的调用关系

利用Eclipse CDT 阅读C/C++代码

选择函数名称 , 然后按 (ctrl+ALT+ H)

4. 刷选一个 .h 或者 .cpp 文件中的函数名称或者全局变量

Eclipse CDT 提供了类似 SI Outline 窗口,可以看到全部的源文件的结构 , 除此之外,还可以提供给一个可刷选的弹出框 , 同样也可以接受正则表达式 :

利用Eclipse CDT 阅读C/C++代码

5. 总结 , 优点 .

a) 顺推方式下 , SI Eclipse CDT 的功能上没有区别

b) 回溯方式 Eclipse CDT 优于 SI( 查找父类 , 查找调用关系 )

c) 免费和跨平台

源码阅读过程

如果需要分析源文件,可以按照以下步骤来进行 :

1. 建立一个空的 C/C++ 工程

利用Eclipse CDT 阅读C/C++代码

2. Import 待分析源文件的路径位置 :

利用Eclipse CDT 阅读C/C++代码

然后选中位置 :

利用Eclipse CDT 阅读C/C++代码

3. 点击 Finish 之后,源码分析就开始了 , 这样的分析可以透彻到任何文件,包括二进制的 DLL 文件 .

4. 待文件分析完毕 , 即可以对源码进行阅读 . 可以导入不同位置的源码

5. VS/VC 的工作环境中 , 可通过 Eclipse CDT 编写源码, 利用 VS 编译运行。

快捷键总结

1. 查找声明 : F3 ( 或者 Ctrl 加鼠标左键点击 )

2. 头文件和源文件切换 . Ctrl +Tab

3. 查看类继承关系图 Ctrl +T

4. 查找源文件 Ctrl +Shift+R

5. 查找字段 Ctrl +H

6. 查找文件的函数或者全局变量 Ctrl +O

7. 查找被引用的位置 Ctrl + Shift + G

延伸阅读:

[1] 将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT