我想在iPhone项目中使用gcov,并按照苹果公司的说明这里进行操作,但是它并没有起作用。
当我构建和配置项目后,为每个对象文件创建了.gcda文件。但是没有将执行的行记录到.gcda文件中(CoverStory显示所有覆盖率均为0%)。
我只是将一个简单的类添加到模板项目中,如下所示。
我在application:didFinishLaunchingWithOptions中分配了这个类并调用了func1,我期望SomeClass的覆盖率显示出来(大约50%)。
我使用的是OSX 10.6.4、iPhone SDK 4.0和Xcode 3.2.3。 还需要一些其他的配置吗?请指导。
更新于2010/7/15: 我尝试了@tonclon给我的链接中的提示,但还没有成功。 以下是我尝试的描述。
当我构建和配置项目后,为每个对象文件创建了.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给我的链接中的提示,但还没有成功。 以下是我尝试的描述。
使用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)。
在谷歌工具箱中使用自定义gcov库 不要在其他链接标志中设置-lgcov, 我尝试了google-toolbox-for-mac中包含的自定义gcov库, 但生成的.gcda文件显示覆盖范围为0%。(相同的结果)
请告诉我接下来该怎么做?任何建议都将不胜感激。