8

我正在尝试使用 iPhone 模拟器分析我的代码。我启用了Generate Test Coverage FileInstrument Program Flow并将-lgcov添加到链接器标志。根据我读过的所有内容,这应该是我在设置方面需要做的所有事情。

更新:生成测试覆盖文件触发-ftest-coverage标志,仪器程序流程触发-fprofile-arcs标志。我已经检查了构建日志,并且在编译时正在设置它们。

执行程序我可以看到.gcno文件出现在旁边.o编译代码在 build/.build/Debug-iphonesimulator/.build/Objects-normal/i386 目录下。

但是当我在模拟器中运行应用程序时,我没有看到任何*.gcda文件。

我的理解是这些文件包含来自检测的数据。但我在电脑上的任何地方都找不到它们。

我知道它们可以生成并出现在*.gcno文件旁边,因为我有一个旧的废弃的 buil 目录,其中确实有它们。我只是不知道我必须做什么才能让他们出现并记录跑步。

任何帮助表示赞赏。

4

2 回答 2

1

这个链接可能有答案,基本上 gcda 文件在您的应用程序正常退出之前不会生成。它提供了两种可能的解决方案:

  • 完全退出模拟器
  • 将此添加到您的 plist(但不适用于发布版本):

    <key>UIApplicationExitsOnSuspend</key>
    <true/>
    
于 2011-01-17T03:41:09.100 回答
1

我希望这个链接能给你一些想法。探索我找到的链接

.gcno 文件是在使用 GCC -ftest-coverage 选项编译源文件时生成的。它包含重建基本块图和为块分配源行号的信息。

.gcda 文件在执行包含使用 GCC -fprofile-arcs 选项构建的目标文件的程序时生成。为使用此选项编译的每个目标文件创建一个单独的 .gcda 文件。它包含弧过渡计数和一些摘要信息。

因此,您可能正在使用一些错误的设置进行构建。该信息在http://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html#Gcov-Data-Files中提及

于 2011-01-21T10:15:34.533 回答