【问题标题】:iPhone: Cannot get simulator to generate .gcda profiling data filesiPhone:无法让模拟器生成 .gcda 分析数据文件
【发布时间】:2011-06-08 12:22:13
【问题描述】:

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

更新:Generate Test Coverage File 触发 -ftest-coverage 标志,Instrument Program Flow 触发 -fprofile-arcs 标志。我已经检查了构建日志,并且在编译时正在设置它们。

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

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

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

我知道它们可以生成并出现在 *.gcno 文件旁边,因为我有一个旧的垃圾构建目录,其中确实包含它们。我只是不知道我必须做什么才能让它们出现并记录运行。

任何帮助表示赞赏。

【问题讨论】:

  • 您是否有机会试图找到并摆脱“瓶颈”?如果是这样,consider random-pausing.
  • 没有。我的主要兴趣是查看单元测试覆盖了多少应用程序,并帮助我确定我想添加更多测试的区域。来自 java/agile 背景,单元测试是我喜欢做的事情:)

标签: iphone profiling gcov


【解决方案1】:

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

.gcno 文件是在 源文件是用 GCC 编译的 -ftest-coverage 选项。它包含重建基本信息的信息 块图和分配源线 数字到块。

.gcda 文件是在以下情况下生成的 包含构建的目标文件的程序 使用 GCC -fprofile-arcs 选项是 执行。一个单独的 .gcda 文件是 为每个编译的目标文件创建 使用此选项。它包含弧 转换计数,以及一些总结 信息。

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

【讨论】:

    【解决方案2】:

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

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

      <key>UIApplicationExitsOnSuspend</key>
      <true/>
      

    【讨论】:

    • 谢谢。我尝试了这两种解决方案。完全关闭模拟器,然后将该行添加到 plist。都没有用。
    • 刚刚尝试删除前缀标头。没有解决问题。即使我也退出了模拟器。
    • 我认为问题在于设置错误。他正在获取带有GCC -ftest-coverage 选项的gcno 文件,他需要使用GCC -fprofile-arcs 选项构建以获取gcda 文件。
    • @Madhup - 抱歉,我肯定是用 -fprofile-arcs 构建的。
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 2012-04-18
    • 2014-07-18
    • 2011-06-06
    • 2016-08-25
    • 2015-02-24
    • 2019-07-30
    相关资源
    最近更新 更多