源码阅读工具-understand

相对于大家熟知的source insight 源码阅读工具,understand工具似乎差了不少。
但是,两者的优缺点很显而易见,
source insight 优缺点(捡重点说):
- 很好的“即点即现”功能,鼠标所到就可以看到相关内容的定义/声明;
- 不能够很好的维护/支持 函数的调用层级关系;
相对的 understand源码阅读工具,不支持“即点即现”功能,但却很漂亮的维护/支持了 函数的层级调用关系。
如果你有这方面的需求,建议尝试用用understand工具,它能够更好地为你理清楚函数的调用层级关系。
以下,understand的功能解释/使用。

层级关系图:

如下代码示例:

void root(void)
{
    //平台初始化
    Init_Flats();
    //创建系统任务
    ShowInitInfo("创建系统任务2...");
    CreateSysTask2();
    //加载主维护口
    ShowInitInfo( "加载维护端口..." );
    InitSysPort();
    //初始化负控系统
    ShowInitInfo("创建/扫描系统文件...");
    if(!bInSafe)
        InitFKSystem();
    if(bInSafe)
    {
        Trace("安全模式");
    }
    ExInitShowInitInfo();
    //退出ROOT任务
}

butterfly:

显示调用和被调用关系,如果存在。选定的实体用红色标识,如图:
这里写图片描述
可知,选定的为root函数,VC_Entry函数调用多级…最终调用了root函数;root函数调用了包括ShowInitInfo函数等等,以及更深层次的调用。

Calls:

显示从此函数发出的整个呼叫链。 实体之间的每条线被读作“x调用y”。
这里写图片描述
可知,root函数中调用的如图所示的函数。

Called By:

显示谁直接调用了该函数。
这里写图片描述

Calls Relationship / Calledby Relationship:

显示两个函数之间的调用以及被调用关系。
Calls Relationship:
root 调用ShowInitInfo
这里写图片描述

Calledby Relationship:
ShowInitInfo 调用root:
这里写图片描述

Control Flow

函数实体的流程图:不完美,但很清晰。
这里写图片描述

Declaration:

显示函数实体的结构,包括:函数名,函数返回值、函数实体被调用函数、函数实体调用了的函数;
这里写图片描述

Declaration File

对选中函数的定义文件的描述,包括该文件包含的头文件、变量、文件包含的函数等
这里写图片描述
gdwLastSaveTime为文件定义的变量,

UML Sequence Diagram:

生成UML的时序图,具体的请另行查看,不做过多解释。

扫描二维码关注公众号,回复: 3163013 查看本文章

Cluster graphs:聚类图

包括:Cluster Call, Cluster Callby, Cluster Call Butterfly, Cluster Call Internal, and Cluster Control Flow等,与上述的其他图类似,但更全面,有大局观。这里不一一列举。

猜你喜欢

转载自blog.csdn.net/guozhongwei1/article/details/80282734