【问题标题】:Running gcov on shared library from python script从 python 脚本在共享库上运行 gcov
【发布时间】:2012-11-15 21:52:09
【问题描述】:

我在通过 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 时我是否遗漏了任何选项。

【问题讨论】:

    标签: python c linux shared-libraries


    【解决方案1】:

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

    GCOV man page

    【讨论】:

      【解决方案2】:

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

      可以通过BOOST.PythonSWIG来实现。

      【讨论】:

      • 您可以参考this page 了解 SWIG 方法的一些细节
      • 不确定我在这里提供 python 包装器的实际含义。我能够成功调用库中的方法。问题仅在于运行 gcov。
      猜你喜欢
      • 2016-03-15
      • 2011-04-12
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2011-07-05
      相关资源
      最近更新 更多