iPhone:我怎样才能使用gcov?

tai*_*ino 5 iphone gcov google-toolbox-for-mac

我正在尝试在iPhone项目上使用gcov并遵循此处描述的Apple的指令,但它不起作用.

当我构建并配置项目时,将为每个目标文件创建.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
Run Code Online (Sandbox Code Playgroud)

我分配了这个类并在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中编译某些语法(ex Blocks)

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

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

dma*_*ach 0

有几件事:

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

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