gpt4 book ai didi

c++ - 使用 C++ 编译器运行 gcov 工具

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:03:25 24 4
gpt4 key购买 nike

我第一次使用覆盖率工具 gcov 来分析一个大型项目。我有这样的目录结构:

    HW
-FooHW1.cpp
-FooHW1.h
-FooHW2.cpp
-FooHW2.h
-...
-Makefile.am
Lib1
-FooLib1.cpp
-FooLib1.h
-FooLib2.cpp
-FooLib2.h
-...
-Makefile.am

Lib2
...
-Makefile.am
Lib3
...
-Makefile.am
Main
-main.cpp
-main.h
-Makefile.am

每个目录都有自己的 Makefile,使用 automake 生成依赖项,无论在哪里使用的编译器都是 c++。

由于我的目标是分析语句覆盖率,因此我尝试使用 gcov 将以下行添加到每个 Makefile.am 以生成我的 .gcno 和 .gcda 文件以便使用 gcov:

    AM_CXXFLAGS = -fprofile-arcs -ftest-coverage
AM_LDFLAGS = -fprofile-arcs

不幸的是,即使它编译它也不会创建(或链接)几个 *.o 并且在调用 gcov 时它通常会给我错误:

    undefined __gcov_init

根据 http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#index-coverage-536,我也试过替代,上层指令为:

    AM_CXXFLAGS = --coverage
AM_LDFLAGS = --coverage

但这对我没有用。

我想说明一下,这是第一次使用 gcov 工具和处理大型 c++ 项目。感谢您的帮助。

最佳答案

http://bobah.net/d4d/tools/code-coverage-with-gcovhttp://www.slideshare.net/maguschen/using-gcov-and-lcov是使用 gcov/lcov 的良好来源(有了这个帮助,我已经设法在非常大、复杂的项目中使用 lcov)

lcov 使您有可能以 html 格式显示覆盖结果(列出的文件甚至源文件中的行的百分比很好)。

哦,我希望你确实意识到这是一个动态覆盖,所以你必须实际运行程序才能获得任何覆盖(构建应该只创建 .gcno 文件)。

关于c++ - 使用 C++ 编译器运行 gcov 工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18056011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com