5

我遇到了从 python 脚本在共享库上运行 gcov 的问题。

我在以下情况下构建我的库:

  1. 将一组文件(file1.c、file2.c)编译成静态链接的 lib(.a)。我使用 ar 实用程序来执行此操作,并且所有文件都使用以下选项编译:

    -static -fprofile-arcs -ftest-coverage -coverage

  2. 使用其他一些文件(比如 file3.c)和上面指定的 .a 文件构建一个 .so 文件。我在编译和链接时再次使用相同的选项。

  3. 在 python 脚本中加载 .so 并执行。

问题:生成的覆盖率文件仅包含 file3.c 的代码覆盖率。属于 .a 库的文件不会显示在覆盖率报告中。

在此处链接 .a 时我是否缺少任何选项。

4

2 回答 2

1

发现了问题。我没有拿起所有 .gcda 文件来生成报告。使用 -object-directory 选项搜索所有 gcda 文件。

GCOV 手册页

于 2012-11-28T07:36:08.413 回答
-1

您必须确保在您的 c 代码中提供 python 包装器。

它可以通过使用BOOST.PythonSWIG来实现。

于 2012-11-28T05:37:52.783 回答