在linux下做开发,我一直用的eclipse。期间也配置过vim的IDE,但需要在项目中推广使用,感觉生产力还是稍逊一些。
eclipse的linux tools系列工具使用起来也比较方便,再结合一些常用插件,如svn,能满足大多数日常开发需求。
1.gcov
代码覆盖率测试,可以直观的看出每行代码的执行情况。配置步骤如下:
创建可执行工程-->在工程名上右键-->属性-->setting-->Tool Setting标签-->Debugging
Debug Level: Maximum(-g3)
Other debugging flags: -ftest-coverage -fprofile-arcs
(gprof设置也在此标签中:Generate gprof information (-pg)前打勾)
Tool Setting标签-->GCC C Linker
Miscellanous
Linker flags: -ftest_coverage -fprofile-arcs
即在编译和链接过程中分别加入参数: -ftest-coverage和-fprofile-arcs。在链接时不加 -ftest-coverage 参数也可以。
2.gprof
性能测试工具,通过采样的原理,可以看出是哪些代码在使用系统资源。此工具主要针对用户空间的性能的测试,使用前可以用time工具对目标程序进行观察,如果用户空间时间相对很少,则此工具可能对程序的帮助不是很大,可以使用其它工具,如oprofile、systemtap等。
这两个工具,一般系统自带,不需要单独安装,使用方便。grpof和gcov一样,都需要程序运行并正常退出,对可以生成对应的文件。gprof生成文件为:gmon.out,gcov生成文件较多,每个cpp文件一个,包括两种格式。在eclipse中双击这些文件,即可直观的看到相关结果。对于长期运行的程序来说,可以使用特殊信号来使用程序正常退出,如eclipse中停止程序运行使用的是 SIGTERM 信号,建立此信号处理函数,并在其中调用exit()即可。如果不想运行程序,可以使用splint、cppcheck。其中cppcheck有eclipse插件,splint 印象中见过有,但后来找不到了,而且仅对C语言。
3.valgrind
valgrind提供了一系列的工具,其中比较常用的是内存泄露检测工具。eclipse提供了调用接口,valgrind需要单独安装。结果展示也比文本方式直观,双击可以定位到代码行。