【问题标题】:iPhone: How can I use gcov?iPhone:如何使用 gcov?
【发布时间】:2011-03-14 10:50:11
【问题描述】:

我正在尝试在 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

我分配了这个类并在应用程序中调用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(ex Blocks)中的某些语法

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

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

【问题讨论】:

  • 您是否遵循此处给出的所有提示:stackoverflow.com/questions/1385568/…
  • @tonclon 非常感谢您提供的信息,我在该链接中尝试了这些提示,但它还没有工作.. 我正在更新我的问题。你能告诉我更多关于这个问题的提示吗?
  • 有点无用,但不再支持 gcov;我们放弃了使用它。
  • @tc 你从哪里知道的?请提供链接并考虑回答而不是评论,不能将赏金奖励给评论。
  • 您想要覆盖哪种语言?客观C? C?

标签: iphone gcov google-toolbox-for-mac


【解决方案1】:

有几点:

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

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

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2011-03-04
    • 2020-06-18
    • 2017-01-29
    • 2020-02-22
    • 2015-01-25
    • 2013-12-13
    • 2011-05-11
    • 2010-12-29
    相关资源
    最近更新 更多