【问题标题】:Is it possible to get "execution time consumption" information from gcda files?是否可以从 gcda 文件中获取“执行时间消耗”信息?
【发布时间】:2023-03-03 15:13:01
【问题描述】:

据我所知,使用-fprofile-arcs 标志编译代码会在代码执行后生成.gcda 文件。与-ftest-coverage标志一起编译后的.gcno文件,可以得到执行了哪些代码,执行了多少次的信息,得到所谓的代码覆盖率报告。

是否有可能以类似的方式从.gcna 文件中获取类似于gprof 的配置文件信息,例如函数调用计数和执行时间信息?

【问题讨论】:

    标签: gcc report profiling gcov


    【解决方案1】:

    我不敢这么说,但您误解了这里的术语。

    GPROF:它是一个 C/C++ 程序分析器。其目的是为特定执行生成分析信息,其中包括性能统计信息,例如不同函数之间的控制流,以及与父函数和子函数单独消耗的传播时间的关系。因此,这里的重点是在程序中找到性能下降点。

    在哪里,

    GCOV:它是一个 C/C++ 覆盖率分析工具。其目的是获取每个语句、分支和块的执行计数。因此,这里的重点是获取覆盖率统计信息。

    因此,故事的寓意是这两种工具具有不同的生活目的。 ;)

    如果您希望同时获得可以使用 gprof 的信息,尽管它在很多情况下都有局限性,但它也会以方法级别的粒度为您提供覆盖率信息。

    【讨论】:

    • 我试过gprof,但由于它使用SIGPROF,它完全破坏了我拥有的所有代码,因为我等待各种事件并且所有这些调用都不会检查errno返回时为EINTR。为了能够运行gprof,100% 遵守这一要求是一项艰巨的工作。相反,我一直在使用 vtune(由 Intel 提供),这不需要我重新设计 99% 的代码。
    猜你喜欢
    • 1970-01-01
    • 2012-03-18
    • 2020-09-04
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2022-06-23
    相关资源
    最近更新 更多