用gcov来检查Qt C++程序的代码覆盖率
来源:互联网 发布:网络机顶盒销量排行榜 编辑:程序博客网 时间:2024/05/17 06:32
最近才发现MinGW里面包含一个叫做gcov的工具,可以用来检查你的程序运行时调用了哪些代码,同时显示代码行被调用的次数。这个功能在代码的覆盖率和性能调优方便都能用上。
我的运行环境
- Windows XP
- MinGW(gcc 4.4.0)
- Qt 4.8.4
第一步:编写一个可运行的Qt程序
要用到的文件:hihi.cpp, hihi.pro- hihi.cpp
class Haha{public: void hihi() { for (int i = 0; i < 100; i++) { int j = 0; } }};int main(int argc, char *argv[]){ Haha haha; haha.hihi(); return 0;}
- hihi.pro
SOURCES += hihi.cppQMAKE_CXXFLAGS += --coverageLIBS += -lgcovhihi.cpp没什么特别的。主要看看hihi.pro. QMAKE_CXXFLAGS += --coverage 用来告诉g++我们要做coverage。LIBS += -lgcov用来链接gcov库
第二步:编译Qt程序
用下面的命令编译hihi工程D:\workspace\cpp\hihi>qmakeD:\workspace\cpp\hihi>make release现在我们的release目录下就有三个文件了。值得注意的是hihi.gcno文件。它存储的是代码段和对应的行号。
D:\WORKSPACE\CPP\HIHI\RELEASE hihi.exe hihi.gcno hihi.o
第三步:运行Qt程序
现在运行hihi.exe
D:\workspace\cpp\hihi>release\hihi.exe现在我们的release目录下就有四个文件了。比上一步多了一个hihi.gcda。它存储了hihi.exe运行过程中的一些数据。
D:\WORKSPACE\CPP\HIHI\RELEASE hihi.exe hihi.gcda hihi.gcno hihi.o
第四步:用gcov来生成报告
运行如下gcov命令来生成报告。 -o release指的是gcov需要的数据文件hihi.gcno, hihi.gcda都在release目录下。
D:\workspace\cpp\hihi>gcov hihi.cpp -o release现在我们的hihi目录下有如下文件。我们要关心的是hihi.cpp.gcov。这个就是hihi.cpp运行的报告文件。
D:\WORKSPACE\CPP\HIHI│ hihi.cpp│ hihi.cpp.gcov│ hihi.pro│ Makefile│ Makefile.Debug│ Makefile.Release│├─debug└─release hihi.exe hihi.gcda hihi.gcno hihi.o
第五步:查看报告
hihi.cpp.gcov是一个文本文件,内容如下。报告一目了然,最左侧显示的是该行代码运行的次数。比如第5行for语句运行了101次。-: 0:Source:hihi.cpp -: 0:Graph:release/hihi.gcno -: 0:Data:release/hihi.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:class Haha -: 2:{ -: 3:public: -: 4: void hihi() { 101: 5: for (int i = 0; i < 100; i++) { 100: 6: int j = 0; -: 7: } -: 8: } -: 9:}; -: 10: 1: 11:int main(int argc, char *argv[]) -: 12:{ -: 13: -: 14: Haha haha; -: 15: haha.hihi(); -: 16: 1: 17: return 0; -: 18:}
- 用gcov来检查Qt C++程序的代码覆盖率
- 用gcov来测试代码覆盖率
- linux下代码覆盖率检查工具---gcov的用法
- linux下代码覆盖率检查工具---gcov的用法
- gcov代码覆盖率使用gcov完成代码覆盖率的测试
- gcov+lcov C代码覆盖率 初识
- PostgreSQL C代码覆盖率测试(gcov, lcov)
- PostgreSQL C代码覆盖率测试(gcov, lcov)
- 使用gcov完成代码覆盖率的测试
- GCOV的使用-测试代码覆盖率
- gcov测试代码覆盖率的命令
- 测试代码覆盖率-GCOV的使用
- gcov、lcov生成代码覆盖率的过程
- C/C++代码覆盖率工具:gcov和lcov的使用入门
- C/C++代码覆盖率工具:gcov和lcov的使用入门 .
- 利用gcov测试代码覆盖率
- 代码覆盖率分析(gcov)
- 利用gcov测试代码覆盖率
- 发哥逛金陵—逐浪软件项目组南京一二记事
- 程序员为何喜欢半夜工作?
- unlocked_ioctl取代ioctl,内核以及应用
- mahout SparseVectorsFromSequenceFiles详解(2)
- Openflow协议规范
- 用gcov来检查Qt C++程序的代码覆盖率
- FusionCharts下载地址汇总及更新介绍
- jQuery+Ajax+Struts2.0
- 【设计模式】【代理模式,大图片加载】
- uninstall Windows Defender with UninstallGeek.Com Uninstall Guides
- 记下ACE_DEBUG的匹配符,总是忘记
- makefile详解(20) 条件判断
- 二叉树排序树(二叉搜索树)
- 牛排的种类和吃法