iPhone:如何使用 gcov?

标签 iphone gcov google-toolbox-for-mac

我正在尝试在 iPhone 项目上使用 gcov 并遵循 Apple 的说明 here ,但它不起作用。

当我构建并配置项目时,会为每个目标文件创建 .gcda 文件。 但没有执行的行记录到 .gcda 文件中。 (CoverStory 显示所有覆盖率均为 0%)

我刚刚向模板项目添加了一个简单的类,如下所示。

@interface SomeClass : NSObject
- (void)func1:(BOOL)flag;
@end

@implementation SomeClass
- (void)func1:(BOOL)flag {
  if (flag) {
    NSLog(@"flag is YES");
  }
  else {
    NSLog(@"flag is NO");  
  }
}
@end

我分配了这个类并在application中调用func1:didFinishLaunchingWithOptions, 我预计会显示 SomeClass 的覆盖率(50% 左右)。

我使用的是 OSX 10.6.4、iPhone SDK 4.0 和 Xcode 3.2.3。 还需要一些配置吗?请指导。

2010/7/15更新:

我在 link 中尝试了这些提示@tonclon 给了我,但还没有起作用。 下面的描述是我尝试过的。

  1. GCC 4.0编译的Cocoa应用程序 在“Cocoa”应用程序的项目设置中,

    • 将 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS 设置为 YES
    • 将 GCC_GENERATE_TEST_COVERAGE_FILES 设置为 YES
    • 将其他链接器标志设置为 -lgcov
    • 将 C/C++ 编译器版本设置为 4.0

    它成功了,.gcda 文件已按预期生成,其中包含覆盖率信息。 然而,在使用 SDK 4.0 的 iPhone 项目中,我无法使用相同的配置,因为 gcc 4.0 无法编译 SDK 4.0 中的某些语法(例如 Blocks)

  2. 在 google-tool-box 中使用自定义 gcov 库 而不是在其他链接器标志中设置 -lgcov, 我试过custom gcov library included in google-toolbox-for-mac , 但生成的 .gcda 文件显示覆盖率为 0%。 (结果相同)

你能告诉我接下来应该做什么吗?任何建议表示赞赏。

最佳答案

有几件事:

  1. 关闭前缀 header
  2. 确保您“正确”退出

请查看此处的 gcov 页面 (http://code.google.com/p/google-toolbox-for-mac/w/list),看看它们是否有帮助。我让 gcov 与 Xcode 3.2.5 和 iOS4.2 一起使用。

关于iPhone:如何使用 gcov?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3222628/

相关文章:

linux - 我可以在不重新编译整个内核的情况下将 gcov 用于内核模块吗?

objective-c - ld : library not found for -lGoogleToolboxForMac

unit-testing - 检查 IBOutlet 与 OCMock 的连接

javascript - 使用 Titanium Mobile 编译应用程序后 JavaScript 代码会发生什么

iphone - 将两个按钮放入一个 UITableViewCell

c++ - 代码覆盖警告垃圾邮件输出

objective-c - 匹配字符串中短语的第一个单词

iphone - 如何在 IOS5 上查看通话记录历史记录

iphone - 从 json 填充 UITableView

c++ - 如何使用带有 `if/else if/else`的gcovr获得100%的分支覆盖率