iPhone:我该如何使用gcov?

5
我想在iPhone项目中使用gcov,并按照苹果公司的说明这里进行操作,但是它并没有起作用。
当我构建和配置项目后,为每个对象文件创建了.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:didFinishLaunchingWithOptions中分配了这个类并调用了func1,我期望SomeClass的覆盖率显示出来(大约50%)。
我使用的是OSX 10.6.4、iPhone SDK 4.0和Xcode 3.2.3。 还需要一些其他的配置吗?请指导。
更新于2010/7/15: 我尝试了@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. 在谷歌工具箱中使用自定义gcov库 不要在其他链接标志中设置-lgcov, 我尝试了google-toolbox-for-mac中包含的自定义gcov库, 但生成的.gcda文件显示覆盖范围为0%。(相同的结果)

请告诉我接下来该怎么做?任何建议都将不胜感激。


你是否遵循了这里给出的所有提示:https://dev59.com/unM_5IYBdhLWcg3waieJ - tonklon
@tonclon非常感谢您提供的信息,我尝试了链接中的这些提示,但还没有解决问题。我正在更新我的问题。 您能否告诉我更多关于这个问题的提示? - taichino
@tc 你从哪里知道的?请给出链接并考虑回答,不能将赏金授予评论。 - tonklon
你想要哪种语言的覆盖率?ObjectiveC?C? - Ira Baxter
@Ira Baxter 谢谢您的评论,我想测量 Objective-C 的代码覆盖率。 - taichino
显示剩余2条评论
1个回答

0

几件事情:

  1. 关闭前缀头
  2. 确保你正确地退出

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接