- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经尝试了很多我创建的解决方案,但都没有奏效。我正在为一个项目编写一个新代码,但是这段代码被很多硕士和博士学位所触动,他们不在乎使其可读性。因此,确实有很多东西没有用,甚至没有用过。
然后我开始关注 gcov 和 lcov,但是在我生成 .info 文件并加载到 lcov html 中之后,除了我的所有文件之外,它只跟踪主文件!甚至知道用了很多其他函数和文件!
(真的很抱歉我的英语不好,我来自巴西亚马逊马瑙斯,英语不是很好!但是我花了一个月的时间寻找这个答案,尝试了很多东西,但一点运气都没有)
我的文件看起来像:
-src/
-core/
-Index.cpp/h
-PostingList.cpp/h
-PreProcessor.cpp/h
-methods/
...
-parser/
...
-run/
...
-structures/
...
-utils/
...
我在项目源目录中得到了一个 CMakeFile.txt,如下所示:
cmake_minimum_required (VERSION 2.4)
project (queryProcessor)
include("${${PROJECT_NAME}_SOURCE_DIR}/globalVariables.cmake")
include_directories(${INCLUDES})
link_directories(${LIBS})
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
add_subdirectory(src)
add_executable(QueryProcessor src/run/queryProcessor.cpp)
target_link_libraries (QueryProcessor libQueryProcessor rt -fprofile-arcs)
add_definitions(-O2 )
还有一个位于 src 目录中,如下所示:
aux_source_directory( utils UTILS )
aux_source_directory( parser PARSER )
aux_source_directory( methods METHODS )
aux_source_directory( structures STRUCTURES )
aux_source_directory( core CORE )
aux_source_directory( . SRC )
aux_source_directory( ../../libs-iw/indexer/include UTILS2 )
add_library( libQueryProcessor ${UTILS} ${UTILS2} ${SRC} ${PARSER} ${METHODS} ${STRUCTURES} ${CORE})
set(CMAKE_CXX_FLAGS "--coverage")
include ( ${${PROJECT_NAME}_SOURCE_DIR}/install.cmake )
我们将不胜感激任何帮助,包括对更好的 CMakeFiles 的建议,提前致谢
最佳答案
抱歉耽搁了。
您需要使用适当的选项编译程序中的每个源文件才能使用 gcov。 documentation提到了 -fprofile-args -ftest-coverage
,但您可能还想使用与分析相关的其他选项。
因此您需要按照 How to add linker or compile flag in cmake file? 中的建议附加那些标志在所有目标定义之前(即靠近主要 CMakeLists.txt
开头的某处)您可能想要添加一个 CMake 选项来立即控制这些标志:
option(USE_GCOV "Create a GCov-enabled build." OFF)
...
if (USE_GCOV)
set(GCC_COVERAGE_COMPILE_FLAGS "-fprofile-arcs -ftest-coverage")
set(GCC_COVERAGE_LINK_FLAGS "-lgcov")
endif()
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}" )
set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}" )
...
add_subdirectory(...)
add_library(....)
add_executable(....)
关于c++ - gcov 没有生成所有 gcda 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36950716/
我有两个使用通用 C++ 类的主要函数。 文件 1: main.cpp #include #include "HelloAnother.h" int main() {
我正在尝试使用 iPhone 模拟器分析我的代码。我已启用生成测试覆盖率文件和仪器程序流程,并将-lgcov添加到链接器标志中。根据我读到的所有内容,这应该是我在设置方面需要做的全部事情。 更新:生成
我使用 gcov 进行代码覆盖率分析,并使用 lcov 生成覆盖率的图形输出。这对于至少已执行目标文件的某些部分的代码文件非常有效。我希望能够跟踪根本没有执行的文件。我怀疑这与没有为这些文件生成 .g
我目前面临为静态库的覆盖数据生成 .gcda 文件的问题。我可以获得大多数文件的覆盖率数据,但不是全部。 我将缺少覆盖率数据的目标文件称为 X。 一些注意事项: 我已经使用适当的标志编译了库和测试可执
我想使用 gcov 和 lcov 生成覆盖率报告。 到现在为止我做了什么 :- 1. I compiled my code using --fprofile-arcs and -fprofile-co
我有几个针对应用程序的单元测试,每个测试都能够生成 .gcda 文件。我希望能够生成统一的 .gcda 文件,这些文件代表整个测试套件的覆盖范围。似乎没有一种简单的方法可以做到这一点,但我可能是错的,
注意:这可以被视为 Gcov is not generating *.gcda file 的副本,但是: 这个问题没有答案 我认为 OP 的系统与我不同,所以我认为我只去编辑他的问题是不行的。而且,问
我正在尝试使用主目录中的 lcov 生成代码覆盖率报告。源代码使用 -coverage 选项编译,以在编译时生成覆盖率信息(创建 gcno 文件)。然后我将可执行文件和 gcno 文件复制到主目录。我
我正在尝试使用主目录中的 lcov 生成代码覆盖率报告。源代码使用 -coverage 选项编译,以在编译时生成覆盖率信息(创建 gcno 文件)。然后我将可执行文件和 gcno 文件复制到主目录。我
我尝试使用 -fprofile-arcs 和 -ftest-coverage 运行 gcov,但没有任何链接。 它给出了这个错误:- hidden symbol `__gcov_init' in /
我正在尝试生成 C 文件的覆盖范围(Yocto 项目)。 因此,我在大多数可用模块的 Makefile.am 中添加了 gcov 标志“-g -O0 --coverage”。 它在编译每个带有覆盖标志
我已经尝试了很多我创建的解决方案,但都没有奏效。我正在为一个项目编写一个新代码,但是这段代码被很多硕士和博士学位所触动,他们不在乎使其可读性。因此,确实有很多东西没有用,甚至没有用过。 然后我开始关注
是否可以通过运行链接到使用 --coverage 选项构建的共享库的可执行文件来生成 gcov 数据文件(.gcda 文件)? 基本上,我的主库由多个 c++ 文件编译到一个共享库中,然后是一个名为“
我有相同的源文件(C 和 Obj-C)被编译成两个目标:单元测试可执行文件和实际产品(然后进行集成测试)。这两个目标构建到不同的位置,因此目标文件、.gcno 和 .gcda 文件是分开的。并非所有源
我想知道当 iOS 应用程序在 Xcode 机器人上运行单元测试时如何生成 gcda 文件。 我用了this blog配置 Xcode 以生成测试覆盖率文件并使用利用 lcov 的脚本生成报告。我可以
最近我一直在尝试使用 gcc/gcov 对 C++ 项目进行代码覆盖率测试。该项目由主模块和几个.so库组成,都应该进行测量。 我已经用 gcc 编译了带有 --coverage 参数的所有模块,并将
我有一个用 Cmake 编译的项目。我使用 Gcov 来了解在目标上执行期间的代码覆盖率。我使用 GCOV_PREFIX 来更改 .gcda 文件的目录。但是我在这个目录中只有 45 个 .gcda
我手头有一个带有 cmocka 测试的 C 项目,它是使用 CMake 构建的。现在我尝试使用 gcov 来确定测试覆盖率并使用此 CMake 模块:https://github.com/bilke/
问题: 我正在使用以下标志生成我的 Qt 应用程序(.pro 文件)的代码覆盖率: QMAKE_CXXFLAGS += --coverage QMAKE_LFLAGS += --coverage 代码
执行摘要:我想使用 GDB 来提取存储在我的嵌入式目标内存中的覆盖执行计数,并使用它们来创建 .gcda文件(用于输入 gcov/lcov)。 设置 : 我可以成功地交叉编译我的二进制文件,以我的特定
我是一名优秀的程序员,十分优秀!