【问题标题】:first function unknown第一个功能未知
【发布时间】:2011-07-28 17:13:57
【问题描述】:

我正在与KCachegrind/Cachegrind 一起迈出第一步。 我在机器 A 上运行 Cachegrind,然后将输出文件移动到安装了 KCachegrind 的机器 B 上。

我不知道为什么,但我总是将第一个函数显示为(unknown),这很糟糕,因为我有图片中显示的用法的19.46。 我做错了什么?输出文件是否应该包含所有必要的信息?

  1. 我正在使用编译标志-g 够吗?顺便说一下,我想使用优化的版本,但我不知道它是否有效。
  2. 如果我在进行性能分析的同一台机器上运行 Kcachegrind 是不是最好?

【问题讨论】:

    标签: c++ c profiling kcachegrind


    【解决方案1】:

    您是否正在链接所有库的调试版本?如果没有,您将看不到函数调用在哪里结束。

    1. 是的-g 足以在您的库中获取调试符号。如果要调试某些东西,最好不使用优化。
    2. 如果环境相同,应该没关系。

    【讨论】:

    • mmhh...好问题。我只使用 -pthread 作为选项和其他已经使用 -g 构建的库。我假设当我给 -g 时编译器会为我做这件事。我错了吗?
    • @Abruzzo 我认为这还不够,但我不确定
    【解决方案2】:

    我会检查在您程序的生命周期内何时调用此“未知”函数。如果在 main 之前调用了未知函数,那么它不是您的代码,您不必真正担心它。如果它在 main 之后,那么它可能仍然不是您的代码,但需要更多调查。

    【讨论】:

      【解决方案3】:

      机器 A 和机器 B 的架构是否相同,即 x86?

      如果您没有与 Kcachegrind 相同的体系结构,则会出现问题,不会有当前机器中不可用的功能的信息。

      Code Profiler for ARM

      【讨论】:

      • 这个问题是大约一年前提出的。只是说。
      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 2016-06-09
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多