Windows下使用doxygen阅读和分析C/C++代码

转自:http://blog.sina.com.cn/s/blog_63d902570100gwk6.html

虽然使用各种IDE或者Source Insight 可以方便地在windows下阅读和分析C/C++代码,但是一步步Go to Definetion 实在令人痛苦。Doxygen能够生成函数调用关系图,所有的函数调用关系可以一目了然,另外他还能统计文档中所有的类,成员变量,成员函数等。总的来说,Doxygen不但能从局部把握代码,还能从全局审视代码,后者是一般IDE和Source Insight 不能做到的。所以,使用doxygen阅读分析代码可以达到事半功倍的效果。

doxygen的安装很简单,到官方网站下载doxygen的windows安装程序即可。除了安装doxygen外,还需要安装graphviz,因为doxygen需要使用graphviz的dot.exe生成调用图。graphviz在它的官方网站上也可以下载到安装程序。不过我下载的安装程序在安装时老是报cab文件错误。最后我下载了graphviz的release文件,即安装程序下面的zip压缩文件,下载完成后解压缩即可。

安装完doxygen后即可进行适当的配置,然后运行doxyfile生成文档。基本的配置前人早有说明,不再赘述。需要注意的是:

1.要勾选Dot选项卡下面的HAVE_DOT、CALL_GRAPH 、CALLER_GRAPH 选项。并在DOT_PATH下面填入dot.exe的路径,也就是graphviz安装目录下的bin文件夹。

2.勾选Wizard->Project选项卡下面的Scan recursively!

3.勾选Build选项卡下面的EXTRACT_ALL、EXTRACT_PRIVATE、EXTRACT_STATIC、EXTRACT_LOCAL_CLASSES、EXTRACT_LOCAL_METHODS选项

4.如果程序里面有中文,将Project选项卡下的DOXYFILE_ENCODING和Input选项卡下面的INPUT_ENCODING改为GBK

5.可以勾掉LATEX输出,这样节省编译时间

Doxygen是一款开源软件,可用于从已经存在的VC工程中提炼出软件文档(HTML等格式),包括文件说明、类说明、属性方法说明、类关系等内容。一般常将Doxygen和graphviz两款软件一起安装,后者是一款绘图软件,可在前者生成的软件文档中增加图表。Doxygen的细节可以上网搜索。这里贴一下个人体会,可帮助感兴趣的朋友迅速上手这个软件:

1,安装DOXYGEN和graphviz后,可以在“DOXYGEN安装目录in”下用命令行方式运行doxygen.exe -g 生成一个名为Doxyfile的配置文件。

2,将文件Doxyfile复制到想生成文档的VC工程目录下。 
修改该文件中的如下选项: 
PROJECT_NAME = 填上项目名称 
OUTPUT_LANGUAGE = 改为Chinese 
GENERATE_LATEX = 改为NO 
EXTRACT_ALL = 改为YES 
HAVE_DOT = 改为YES 
DOT_IMAGE_FORMAT = 该为JPG 
DOT_PATH = 填上"C:/Program Files/ATT/Graphviz/bin/" 
DOTFILE_DIRS = 填上"c:/Program Files/ATT/Graphviz/bin/"

3,对VC工程进行如下修改 
(1)在stdAfx.h中增加预定义,以支持DOT画图。 
#ifndef _DIAGRAMS_A_H 
#define _DIAGRAMS_A_H 
#endif 
(2)在重要的类、方法、属性前面增加注释,以支持DOXYGEN分析。 
/// @brief 最主要的业务实现类 
/// 
/// 所有的算法内容基本都在这个类中实现。 
/// 
/// @author lipp

或者放在语句后面 
char sFilename[400]; ///< LOG文件名

并在重要文件前增加注释 
/// @file xxx.cpp 
/// 被其他程序调用的,实现了算法的DLL主程序。 
/// 包括各个方法输出接口。

4,运行DOXYGEN.exe。LOAD以上的Doxyfile文件。点击START。这时会生成一个新的HTML目录在VC工程目录中。

5,使用IE打开新生成的HTML目录中的INDEX.htm文件。

Windows下使用doxygen阅读和分析C/C++代码的更多相关文章

  1. 使用Windows下的git工具往github上传代码 踩坑记录

    使用Windows下的git工具往github上传代码 踩坑记录 背景 由于以前接触的项目都是通过svn进行版本控制,现在公司项目使用git,加上自己平时有一个练手小项目,趁着周末试着把项目上传到自己 ...

  2. 【已解决】Windows下 MySQL大小写敏感 解决方案及分析

    Windows下 MySQL大小写敏感配置 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-3-27 最近在window ...

  3. 在 Linux/windows下 命令行中使用和执行 PHP 代码[交互式php]

    [注释]在ubuntu下,升级php到7.1版本,虽然提示的是Interactive mode enabled, 但实际上可以直接书写命令,和interactive shell效果一样. 一:wind ...

  4. windows下安装git & 在git@OSC上推送代码

    第一部分 windows下安装git 1.下载最新版本的git:直接百度“git”,如图所示,点击立即下载. 也可以直接在官网下载最新版本的git:http://www.git-scm.com/dow ...

  5. c++ 网络编程(四) LINUX/windows下 socket 基于I/O复用的服务器端代码 解决多进程服务端创建进程资源浪费问题

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9613861.html 好了,继上一篇说到多进程服务端也是有缺点的,每创建一个进程就代表大量的运 ...

  6. Windows下dump文件生成与分析

    一.    生成Dump文件方式 1.1任务管理器 在程序崩溃后,先不关闭程序,在任务管理器中找到该程序对应的进程.右键—>创建转储文件. 此时会在默认的目录下创建出一个dump文件. 可以看出 ...

  7. 【第五篇】androidEventbus源代码阅读和分析之unregister代码分析

    代码里面注销eventbus一般我们会在onDestory里面这么写: EventBus.getDefault().unregister(this); 然后走到unregister里面去看看: /** ...

  8. 在Windows下使用Git+TortoiseGit+码云管理项目代码

    1.      安装Git 下载地址:点击打开链接 安装指南:默认选项即可 2.      安装TortoiseGit 下载地址:点击打开链接 安装指南:点击打开链接 3.      在码云创建账号, ...

  9. windows下编译调试nginx

    typora-copy-images-to: image windows下编译调试nginx linux使用gdb跟踪代码效率不高,在通过跟踪代码进行源码分析,与定位复杂逻辑问题时,如果有一个简单易用 ...

随机推荐

  1. struts2使用配置文件中使用json-default的问题

    使用Struts2实现异步验证数据: 与Struts2相关的jar包如下: freemarker-2.3.13.jar ognl-2.6.11.jar struts2-core-2.1.6.jar s ...

  2. smali调试总结

    一. 开始调试 smali调试从最早的重打包用各种JAVA IDE进行调试, 到后来的可以不用重打包用xposed插件, 在到最后的修改系统源码刷机或者修改boot.img刷机一劳永逸 apk可调试可 ...

  3. Python 30分钟入门——数据类型 and 控制结构

    Python是一门脚本语言,我也久闻大名,但正真系统的接触学习是在去年(2013)年底到今年(2014)年初的时候.不得不说的是Python的官方文档相当齐全,如果你是在Windows上学习Pytho ...

  4. DCIntrospect -iOS界面调试

    原文:http://www.cnblogs.com/kw-ios/p/3523525.html 有时,设计稿上的UI很漂亮,布局也整齐,但自己用代码写出来的就不行,不是这里高一点,就是那是低一点,使用 ...

  5. hdu 2191 珍惜现在,感恩生活

    链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2191 思路:多重背包模板题 #include <stdio.h> #include ...

  6. 阿里云CentOS7系列一 -- 安装JDK7的方法.

    最近因为数据采集以及生产环境冲突.导入windows Server 2008系统经常死机.经讨论决定把采集服务程序和生产服务进行分开.采集程序通过windows Server2008运行.而生产程序通 ...

  7. Mipmap与纹理过滤

    为了加快渲染速度和减少纹理锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为Mipmap. 使用DirectX Texture Tool(DX自带工具)预生成Mipmap ...

  8. 卸载oracle 11g grid软件

    一,使用deinstall 同样,卸载grid软件在11g中也推出了了卸载工具deinstall卸载同卸载oracle数据库软件 具体可参考:Behaviour of the Oracle De-in ...

  9. [Tool]使用ConfuserEx混淆代码

    为了防止程序发布后被一些"坏人"破解,开发者通常会对自己的代码进行混淆.这篇博客将介绍一款使用很广,并且混淆效果也不错的工具ConfuserEx. 新建一个C# 控制台程序,Hel ...

  10. 【leetcode】Add Binary

    题目简述: Given two binary strings, return their sum (also a binary string). For example, a = "11&q ...