第一个功能未知
Posted
技术标签:
【中文标题】第一个功能未知【英文标题】:first function unknown 【发布时间】:2011-07-28 17:13:57 【问题描述】:我正在与KCachegrind/Cachegrind
一起迈出第一步。
我在机器 A 上运行 Cachegrind
,然后将输出文件移动到安装了 KCachegrind 的机器 B 上。
我不知道为什么,但我总是将第一个函数显示为(unknown)
,这很糟糕,因为我有图片中显示的用法的19.46
。
我做错了什么?输出文件是否应该包含所有必要的信息?
-
我正在使用编译标志
-g
够吗?顺便说一下,我想使用优化的版本,但我不知道它是否有效。
如果我在进行性能分析的同一台机器上运行 Kcachegrind 是不是最好?
【问题讨论】:
【参考方案1】:您是否正在链接所有库的调试版本?如果没有,您将看不到函数调用在哪里结束。
-
是的
-g
足以在您的库中获取调试符号。如果要调试某些东西,最好不使用优化。
如果环境相同,应该没关系。
【讨论】:
mmhh...好问题。我只使用 -pthread 作为选项和其他已经使用 -g 构建的库。我假设当我给 -g 时编译器会为我做这件事。我错了吗? @Abruzzo 我认为这还不够,但我不确定【参考方案2】:我会检查在您程序的生命周期内何时调用此“未知”函数。如果在 main 之前调用了未知函数,那么它不是您的代码,您不必真正担心它。如果它在 main 之后,那么它可能仍然不是您的代码,但需要更多调查。
【讨论】:
【参考方案3】:机器 A 和机器 B 的架构是否相同,即 x86?
如果您没有与 Kcachegrind 相同的体系结构,则会出现问题,不会有当前机器中不可用的功能的信息。
Code Profiler for ARM
【讨论】:
这个问题是大约一年前提出的。只是说。以上是关于第一个功能未知的主要内容,如果未能解决你的问题,请参考以下文章