Windows平台下源码分析工具

最近这段时间在阅读 RTKLIB的源代码,目前是将 pntpos.c文件的部分看完了,准备写一份文档记录下这些代码的用处、处理过程、理论公式来源、注意事项,自己还没有弄明白的地方。目前的想法是把每一个函数都做成一个名片,这个名片内则包含代码的功能说明、参数说明、函数调用关系图、整体处理过程、注意事项和自己的疑惑这几个部分。而在这个名片内出现的其他函数(包括在文字和调用关系图中出现的)则使用超链接链接到其他函数名片内。然而我并不想自己去手工绘制函数调用关系图,于是就百度了一下,这才发现关于接口文档、说明文档、函数调用关系图这些辅助开发文档早就有人做了专门的软件来高效、有组织地来解决这些问题了。

关于函数调用关系图,在 Linux和 Windows平台下也都有不同的解决方案,搜索一下就能找到很多与之相关的技术文档。目前我是只使用 Windows,这里着重说一下 Windows里中合适的解决方案。

1. 直接使用 VS自带的关系图功能生成调用关系图。对于 windows平台下经常使用 VS来开发的人来说,这毫无疑问是最简单的方法。不过我并没有用这种方法,一来我看了一下,感觉生成的代码图不够直观,有些函数会被折叠;二来目前我并不打算使用 VS来编译 RTKLIB源码,我现在一直是用 NotePad++来编辑、阅读源码的。

2. source insight,好是好,可是在别人的博客中看到,说在SI生成的调用关系图中,当两个函数调用同一个底层函数时,该底层函数会分别出现在两个函数调用图的下面,因此这种方法也不能最快的看出那些经常被调用的底层函数,感觉同一幅图中,同一个函数多次出现,看起来就很冗余,也不好。

3.Doxygen+GraphViz+HtmlHelp,这也是我写这篇博客所想要介绍的。详细内容见 《Windows平台下Doxygen+GraphViz+HtmlHelp自动生成函数调用关系图》(本来想直接转载该篇博客的,但又懒得去联系其作者,遂置一链接于此),下面主要写几个我再按照这篇博客操作时遇到的问题。

1. 给出的Graphviz的下载目录不可用,如下图1所示。这个问题不难,自己去官网下载 windows版本的就行。这里我下载的版本如图2所示,要注意的是这个不是安装包,直接就可以用,所以某些情况下需要自己设置环境变量。而对于本次和 Doxygen联用,则不需要,因为在新建 Doxygen工程时,需要指定 Graphviz的所在目录。

图 1

图 2

2. 生成的调用图中有时候会包含太多底层函数,使整个图反而变得看上去很乱,如下图3所示。这可以在 Doxygen中进行设置,与之有关的参数有两个,DOT_GRAPH_MAX_NODES和 MAX_DOT_GRAPH_DEPTH,分别控制图中的最大节点数和节点深度,如下图 4所示。节点深度默认为 0,即不进行深度控制,用户可自行设置。只是需要注意,深度也不宜太小。比如对于图 5中的调用关系,当设置深度为 1时,C就不会显示出来。

图 3 MAX_DOT_GRAPH_DEPTH=0时的函数调用图

图 4

图 5

我也是今天才发现这个神奇的东西,所关于源码分析工具也就先说到这里。前段时间在打算开始阅读 RTKLIB源码时就在想,阅读开源代码有没有什么“黑科技”,当时出于懒惰没有去查找相关的资料,现在吃了苦头才发现,只能说“技术上可以偷懒,想法上不能偷懒”。做事情都有前人的经验和技巧,善用此道,才能真正偷得到懒。

(最后,我还是要吐槽一下博客园的编辑界面和显示界面,横向上太宽了,真的不如 cmd Markdown写起来方便、美观)

原文地址:https://www.cnblogs.com/taqikema/p/8727977.html

时间: 2024-07-29 19:25:37

Windows平台下源码分析工具的相关文章

Android 源码分析工具

标 题: [原创]Android源码分析工具及方法作 者: MindMac时 间: 2014-01-02,09:32:35链 接: http://bbs.pediy.com/showthread.php?t=183278 在对 Android 源码进行分析时,如果有得力的工具辅助,会达到事半功倍的效果.本文介绍了一些在分析 Android 源码时使用的一些工具和方法,希望能够帮助到有需要的同学. Eclipse 在 Android 应用程序开发过程中,一般会使用 Eclipse,当然 Googl

Linux平台下源码安装mysql多实例数据库

Linux平台下源码安装mysql多实例数据库[[email protected] ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6191/mysqld [[email protected] ~]# ss -tlunp | grep 330tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=6191,fd=10)) [[email protected] ~]# syst

Ubuntu 14.04下安装静态源码分析工具Splint3.1.2

------------------------------------  版权信息  ------------------------------------ 此文链接: http://http://blog.csdn.net/doniexun 此文作者: Windness 版权说明: 此文为作者经过检索网上资源及根据个人开发经验整理所得,所有参考文献均已在文末标注,转载请务必保留此版权信息! ------------------------------------  版权信息 -------

Windows 平台下局域网劫持测试工具 – EvilFoca

简介 安全测试工具可能含有攻击性,请谨慎适用于安全教学及学习用途,禁止非法利用! EvilFoca是Windows环境下基于.NET FrameWork的一款轻量级的劫持测试工具.与BackTrack和Kali_Linux下复杂的命令相比,EvilFoca更加小巧,轻便,简单,但其效果更加显著高效. 准备工作 Logo: Logo有点卖萌-- 官网:http://www.informatica64.com/evilfoca/下载:http://www.informatica64.com/evil

jquery源码分析-工具函数

jQuery的版本一路狂飙啊,现在都到了2.0.X版本了.有空的时候,看看jquery的源码,学习一下别人的编程思路还是不错的. 下面这里是一些jquery的工具函数代码,大家可以看看,实现思路还是很清晰的. 1 // 是否函数 2 isFunction: function( obj ) { 3 return jQuery.type(obj) === "function"; 4 }, 5 // 是否数组 6 // 如果浏览器有内置的 Array.isArray 实现,就使用浏览器自身的

源码分析工具Doxygen+Graphviz

拿到一个新项目或者一个开源框架,看源码的方式不是先进行单步调试!最好的方式是先画出整个项目或者开源框架的类,协作,已经方法调用图,可以帮助你更快的理解框架或者项目的设计. 打包下载地址:http://download.csdn.net/detail/supermarss/8262197 1.配置工作目录->配置Project的基本信息->Diagrams选外部dot生成图 2.Expert选前6项基本属性->Dot中HAVE-Dot复选+DOT_PATH路径 详细步骤参考:http://

java的UDP和TCP详解和北京-赛车平台出租源码分析

1.需求分析北京-赛车平台出租Q1446595067 最近在和硬件做网口的传输协议,一开始告诉我说用TCP的socket进行传输,我说没问题,就写了个socket的发送和接收方法.but过了没一段时间,又告诉我用udp吧,udp传的比较快,就也写了一个udp的.无论是socket还是udp,感觉网上有很多都是写一个监听端口,监听往这个端口发送的数据,然后再写一个发送方法. 2.问题难点本来硬件要是往java端指定端口发,就完全没问题了,但是它是把我发送的数据按照我发的端口号原路返回,就想http

分布式调度平台XXL-JOB源码分析-重试机制

在我们XxlJobScheduler类中,会启动一个失败任务监控线程,本文就来分析JobFailMonitorHelper这个类 原文地址:https://www.cnblogs.com/jiangyang/p/11597800.html

Linux源码分析工具-Source Insight

下载地址:http://www.sourceinsight.com/down35.html 可用注册码:SI3US-205035-36448 使用说明:http://wenku.baidu.com/view/86bda63887c24028915fc33e.html 版权声明:本文为博主原创文章,未经博主允许不得转载.