【问题标题】:How can I run Gcov over an installed Cocoa application?如何在已安装的 Cocoa 应用程序上运行 Gcov?
【发布时间】:2011-03-03 11:29:52
【问题描述】:

我有一个使用安装程序的 Cocoa 应用程序。我希望能够在代码上运行代码覆盖(在安装之后)。

这不是通常的单元测试场景,其中单个二进制文件将运行一组测试。相反,有问题的测试将在运行时与 UI 和应用程序后端进行交互,因此我希望能够在知道 Gcov 正在对其进行分析的情况下启动应用程序,然后针对它运行测试。

有什么想法吗?

更新

感谢 mustISignUp。为了澄清我问这个问题的原因:

我犯的错误是认为对象、.gcno 和 .gcda 文件必须与二进制文件一起安装(从而使安装程序变得困难)。碰巧的是,文件的原始位置与检测代码一起硬连接到代码中。

我采用的解决方案是在构建机器上压缩代码并将其放在测试机器上的磁盘上。 lcov(或只是gcov)可以从那里运行。或者,将在磁盘上创建 .gcda 文件,并且必须将它们复制回包含源代码的机器。

无论哪种方式,源代码都不必在安装和运行时出现,但如果您想将结果恢复为 lcov 样式,则生成的覆盖率计数器文件必须与源代码一致。

【问题讨论】:

    标签: objective-c cocoa xcode code-coverage gcov


    【解决方案1】:

    应用程序需要使用正确的 GCC 标志进行编译,这会将分析指令插入代码中。这不是您可以打开和关闭的东西。即您的代码在编译时被修改以输出覆盖信息。

    因此,如果您使用正确的标志编译应用程序,它将发出覆盖率数据,如果您不这样做,它不会(而且您肯定不希望它用于您要分发的应用程序)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      相关资源
      最近更新 更多