【问题标题】:iOS code coverage broken in Xcode 4.5?Xcode 4.5 中的 iOS 代码覆盖率中断?
【发布时间】:2012-09-22 02:54:08
【问题描述】:

我正在尝试在 Xcode 4.5 中设置代码覆盖率。为此,我打开了 Generate Test Coverage Files 和 Instrument Program Flow 以进行调试设置。根据http://meandmark.com/blog/2012/08/xcode-4-generating-code-coverage-files-with-llvm/,这就是您所需要的。但是,现在链接器抱怨它找不到:

  • _llvm_gcda_emit_arcs
  • _llvm_gcda_emit_function
  • _llvm_gcda_end_file
  • _llvm_gcda_increment_indirect_counter
  • _llvm_gcda_start_file

我试图找到 libprofile_rt.dylib,但它似乎不再存在。生成代码覆盖率文件还需要什么?

【问题讨论】:

  • LLVM 代码覆盖率目前仅适用于 Mac OS X,不适用于 iOS。
  • 适用于 iOS。博客条目中的说明也不完整。缺少创建测试目标。

标签: ios code-coverage xcode4.5


【解决方案1】:

在目标构建设置下(一定要全选)

设置:

  • Apple LLVM 编译器
    • 仪器程序流程:是
    • 生成测试覆盖率文件:是

【讨论】:

  • 这是一个完全正确的答案。我刚刚在 Xcode 4.5.1 上确认了这一点。您只需为测试目标设置这些设置。您可以创建一个目标进行测试:File -> New -> Target 然后选择 iOS |其他 | Cocoa Touch Unit Testing Bundle 此外,您可能需要设置 Generate Profiling Code: YES 以生成 gcda 文件。这是我最近遇到的唯一问题。应该没有链接错误。
  • 我也有同样的问题。 gcno 文件在那里,但没有 gcda 文件。我确实为所有构建配置设置了它们并将 Generate Profiling Code 设置为 YES,但仍然没有 gcda 文件。
  • 我在输出中有 *.gcno 和 *.gcda 文件,这些选项设置为 YES。
  • 谢谢。在我的代码中包含 Google Analytics SDK(使用 Xcode 5)后,这对我有用。你能解释一下它到底是做什么的吗?
【解决方案2】:

我也遇到了这些链接器错误。我使用 Xcode 4.2 和 4.3 看到了错误。我不确定它们在 4.5 中是否仍然存在。

为了解决这个问题,我将 llvm 项目中的 this file 添加到了我的单元测试代码项目中。为了让它在我的 Mac 上构建,我删除了 win32 和 sys 包含并将 #include "llvm/Support/DataTypes.h" 包含替换为 #include "stdint.h"

【讨论】:

  • 嗨,我仍然有这个问题..我正在尝试解决它。我找不到与您完全相同的文件,但我得到了一个名为:GCOVProfiling.cpp 的文件。我认为它们具有相同的功能。问题是它在 llvm 项目中有很多其他文件的导入。我应该如何处理所有的进口?任何帮助将不胜感激,谢谢!
【解决方案3】:

必须通过单元测试才能生成 gcda 文件。

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多