`

gcov输出文件路径问题(转)

 
阅读更多

gcov是和gcc结合使用的测试代码覆盖率的一个工具(profiler),可用于发现代码的瓶颈。可以
做到(使用gcov最好不要优化编译):
    1.每一行代码运行的次数
    2.那些代码执行了
    3.没一节代码所用的时间

    gcov会创建一个名为‘sourcefile.gcov’的日志文件,他指示了代码运行的时间。此文件可被
gprof使用,gprof可从中给出时间信息。
    gcov只支持gcc编译的代码,并且编译时必须有‘-fprofile-arcs -ftest-coverage’参数,它
高速编译器添加额外的对gcov有用信息以及在目标文件中加入产生profiling信息的代码。当运行这样
编译的程序时,每个以‘-fprofile-arcs’编译的目标文件所在的目录会生成一个相应的".gcda"文件。
每个以‘-ftest-coverage’参数编译时会生成".gcno"文件,它包含了重建基本块图表和指派行号的信
息。然后,以源文件名为参数运行gcov,gcov就可从".gcda"文件中获得每一行代码运行的频率。比如:
    $ gcc -fprofile-arcs -ftest-coverage tmp.c
    $ a.out
    $ gcov tmp.c
    注意,gcov必须在编译代码时所在的目录中运行,否则无法定位文件。另外,运行计数是累及的,若
运行gcov时没删除上次输出的文件,本次测试计数会累加到上次计数上,而不是覆盖。

gcov常用参数:
    -a:输出每个基本块的运行计数,此选项可用于统计在同一行中的若干语句的各自运行次数
    -b:输出分支语句频率信息到输出文件,以及概要信息到标准输出,但不显示无条件分支
    -c:以数字而不是百分比显示分支频率
    -n:不创建输出文件
    -l:创建的输出文件名中包含头文件名,这对于头文件中包含代码并被多个源文件使用时有用
    -p:在.gocv文件名中加入完整的路径信息,此时路径中的'/'用'#'表示,'..'用'^'表示
    -f:输出每个函数的概要信息

    .gcov文件的基本格式是:
        执行次数(-表示改行没代码,#####表示改行从未执行过):行号:该行代码

交叉profiling:
    gcov要求运行时在目标系统中有相同的编译时的绝对目录路径,为了支持交叉编译,可使用下面两个
环境变量重定位数据文件:
    GCOV PREFIX - 指定加入到目标文件中的绝对路径前缀,默认没有前缀
    GCOV PREFIX STRIP - 指示要跳过的目录层次
    比如编译后目标文件在‘/user/build/foo.o’,编译后的程序执行时会创建‘/user/build/foo.gcda’
文件。但若把程序拷

分享到:
评论

相关推荐

    linux gcov 工具详细介绍

    3. **分析阶段**:使用 gcov 命令分析 `.gcda` 文件,输出覆盖率报告。 ##### 3.2 gcov 的选项 - **`-b`**:输出基本块信息。 - **`-c`**:显示条件覆盖信息。 - **`-s`**:显示源代码行号。 - **`-t`**:输出测试...

    Linux平台代码覆盖率测试

    GCov使用的文件格式有严格的定义,包括文件头、版本信息、时间戳、函数标记、计数器标记等,这些都是为了精确地跟踪和记录代码覆盖率而设计的。 #### 六、GCC插桩前后汇编代码对比分析 当GCC编译器启用代码覆盖率...

    gcovtools:gcov(GCCClang 代码覆盖率)解析器和翻译器

    接下来,安装 gem: gem install gcovtools 这应该会在您的路径中为您提供一个gcovtools可执行文件。 最后,以多种可能的方式之一执行gcovtools 。 例如,生成一个 HTML 覆盖率报告并将其通过管道传输到coverage....

    GCC使用手册.rar

    - `-o`:指定输出文件的名字。 - `-I`:添加头文件搜索路径。 - `-L`:添加库文件搜索路径。 - `-l`:链接指定的库,如-lmath链接数学库。 - `-Wall`:开启所有警告。 - `-std`:指定使用的C/C++标准,如-gnu...

    Gcc编译器~~~~~~~

    4. `-L`:添加库文件搜索路径。 5. `-l`:链接指定的库,如`-lgcc`链接GCC的运行时支持库。 6. `-Wall`:开启所有警告。 7. `-std`:指定语言标准,如`-std=c++11`启用C++11标准。 在开发过程中,GCC还提供了丰富的...

    GCC-ManualGCC中文手册

    1. `-o`:指定输出文件的名称,如`gcc -o my_program my_source.c`。 2. `-c`:仅编译源文件,不链接,生成目标文件。 3. `-Wall`:开启所有警告选项,有助于发现潜在问题。 4. `-std`:指定C或C++标准,如`-std=...

    超级GCC详尽使用手册

    - **目录选项**:用于指定源文件和输出文件的位置,例如: - `-isystem path`:指定系统头文件目录`path`。 - `-I path`:指定用户头文件目录`path`。 - **警告选项**:用于控制警告信息的输出,例如: - `-Wall...

    单元测试报告(承).pdf

    提交.gcov文件是为了度量代码覆盖率,它显示了源代码中有多少行被执行到了。高覆盖率意味着更多的代码被测试,减少了未被发现的潜在错误。 8. **性能分析** .gprof文件提供了性能分析信息,帮助识别程序中的瓶颈...

    Linux指令速查手册.part1.rar

    1.5 arch指令:输出主机的体系结构  1.6 batch指令:执行批处理指令  1.7 bg指令:将程序放在后台执行  1.8 cd指令:切换目录  1.9 chfn指令:设置finger信息  1.10 chsh指令:改变登录系统时的shell  ...

    check-0.9.9.tar.gz

    此外,Check还支持测试失败时的错误消息输出,以及测试结果的总结报告,帮助开发者快速定位问题。通过`check`命令行工具,可以方便地运行所有的测试,并查看测试覆盖率等信息。 在Linux系统中,Check可以与Gcov或...

    cppcheck-1.90-x64-Setup_代码分析工具_c/C++_tide73u_

    cppcheck 的配置也很灵活,可以通过命令行参数来指定检查的规则集、忽略某些文件或目录、以及输出格式。它还支持自定义检查规则,允许用户根据项目需求扩展其功能。此外,cppcheck 提供的输出信息详细且易读,包括...

    GCC_arm-gcc-linux.zip_arm linux gcc

    - `-L`:添加库文件搜索路径。 - `-l`:链接指定的库,如`-lpthread`链接线程库。 5. **链接库** 对于使用到的外部库,GCC会自动链接系统默认的库。若需链接自定义库,可以使用`-l`选项,如`-lmylib`。 6. **...

    GCC 中文手册(官方的)

    4. **编译选项**:GCC有许多编译选项,如`-c`只编译不链接,`-o`指定输出文件名,`-Wall`开启所有警告,`-O`系列用于优化等级设置等。正确使用这些选项可以提高代码质量和效率。 5. **调试信息**:使用`-g`选项可以...

    waf-help.docx

    9. **install**:将目标文件安装到系统路径中。 10. **list**:列出可以执行的目标。 11. **shell**:启动一个环境已调整过的shell,以便运行本地构建的程序。 12. **sphinx**:构建Sphinx文档,涵盖手册、教程和...

    Linu编程GCC手册

    - **11.1 gcov-tool离线Gcda处理工具**:这是一个用于处理gcov生成的数据文件的工具,方便用户分析代码覆盖情况。 - **12.1 已知问题**:手册列出了使用GCC时可能遇到的一些常见问题及其解决方案。 - **13.1 报告...

    gcc帮助文档

    - `-L`:添加库搜索路径。 - `-l`:链接指定的库。 - `-static`:创建静态链接程序。 - `-shared`:创建共享对象。 #### 五、GCC扩展功能 GCC还提供了一些对C和C++语言家族的扩展功能,例如: 1. **C语言扩展...

    Google Test框架静态库,环境为Window平台X64

    - 编译完成后,会生成静态库文件(通常是.lib或.a),将其添加到你的项目路径,以便链接使用。 2. **基本用法**: - 创建测试用例:在C++中,通过继承`testing::Test`类并定义`TEST_F`宏来创建测试用例。每个`...

    gtest1.5C++单元测试工具

    7. 运行时选项:gtest支持命令行参数,如`--gtest_list_tests`列出所有测试,`--gtest_filter`筛选特定测试用例,`--gtest_output`指定输出格式和路径。 8. 覆盖率报告:虽然gtest本身并不直接支持代码覆盖率报告,...

    gcc编译器文档

    6. **链接选项**:控制链接过程中的行为,如指定库文件路径、定义宏等。 #### 五、C语言实现定义的行为 GCC在处理C语言时,对于某些实现定义的行为提供了详细的解释和规定,包括但不限于: - **整型溢出处理**:当...

Global site tag (gtag.js) - Google Analytics