C++ 在幽灵被修复后仍然可以进行分析吗?

C++ 在幽灵被修复后仍然可以进行分析吗?,c++,linux,g++,profiling,C++,Linux,G++,Profiling,几个星期以来,我一直在尝试分析一个数值软件,但我无法得到有用的结果。 我分析的代码产生了一个巨大的函数(_属性__((扁平)),它是由许多内联函数和对std::exp/std::log/std::pow的一些调用创建的。此函数位于共享库中,并通过dlopen()加载。 我用过 google CPU探查器(挂起在第一个fork()中(被SIGPROF中断,重新启动,中断和…)——与g++选项-pg的问题相同) linux工具性能(导致机器重新启动,我抱怨,他们升级了操作系统(CENTOS 6.5

几个星期以来,我一直在尝试分析一个数值软件,但我无法得到有用的结果。 我分析的代码产生了一个巨大的函数(_属性__((扁平)),它是由许多内联函数和对std::exp/std::log/std::pow的一些调用创建的。此函数位于共享库中,并通过dlopen()加载。 我用过

  • google CPU探查器(挂起在第一个fork()中(被SIGPROF中断,重新启动,中断和…)——与g++选项-pg的问题相同)
  • linux工具性能(导致机器重新启动,我抱怨,他们升级了操作系统(CENTOS 6.5)。结果只突出显示了上述巨大功能中的两条汇编指令。我没有读取准确事件源(*:ppp)的权限
  • 一些旧版本的vtune(操作困难,结果不可靠,未加载硬件驱动程序)
  • sprof(结果不会告诉我任何事情,因为只有一个函数需要分析——如果避免使用属性展平,则行为完全不同)
我在跑步 CENTOS 6.5 和 g++(GCC)5.3.0 我对操作系统的版本或编译器的版本没有任何影响。 几周前我抱怨过古代的操作系统,他们把我升级到了我上面提到的版本

在以前的一些live中,我成功地使用了google profiler——当它工作时(没有因为信号处理问题而崩溃或挂起),它提供了有用的结果

有人有什么评论吗? 所有这些不清楚的结果是否都是幽灵修复的结果? 我是否需要坚持在计算机上启用某些分析选项? 我需要坚持加载vtune驱动程序吗? 我是否需要坚持安装vtune的最新副本?
使用-fno省略帧指针进行编译?

什么特别让您认为您的问题与spectre缓解措施有关?“省略帧指针”可能会混淆许多调试和分析工具,但这与spectre的问题完全是正交的。“spectre修复后是否仍可以进行分析?”-注意:spectre尚未“修复”。有些变化已经缓解,但已修复?不,结果没有告诉我任何事情。有时,我试图分析的函数只消耗一小部分,而下一个会话则消耗更大的一部分。我没有得到任何关于代码行的信息,这些代码行很昂贵(请记住,有两条汇编指令被突出显示为热点,其他所有内容都是空白的)。分析会话总是在相同的输入数据上工作,因此它应该是可重复的。另外,在我看来,google profiler不再产生任何一致的结果,这是对spectre缓解的暗示。也许你只是不知道如何正确使用分析工具,或者不知道如何正确解释它们的结果。不是说这是问题,但可能是。为了它的价值;我最近在我的CentOS 7.8工作站上成功地使用了
perf
,该工作站启用了所有spectre etc缓解措施。您认为您的问题与spectre缓解措施有关的具体原因是什么?“省略帧指针”可能会混淆许多调试和分析工具,但这与spectre问题完全正交。“修复幽灵后仍可以进行分析吗?”-注意:幽灵尚未“修复”“。某些变化已被缓解,但已修复?不,结果没有告诉我任何事情。有时,我试图分析的函数只消耗一小部分,而下一个会话则消耗更大的一部分。我没有得到任何关于代码行的信息,这些代码行很昂贵(请记住,有两条汇编指令被突出显示为热点,其他所有内容都是空白的)。分析会话总是在相同的输入数据上工作,因此它应该是可重复的。另外,在我看来,google profiler不再产生任何一致的结果,这是对spectre缓解的暗示。也许你只是不知道如何正确使用分析工具,或者不知道如何正确解释它们的结果。不是说这是问题,但可能是。为了它的价值;最近,我在CentOS 7.8工作站上成功地使用了
perf
,该工作站启用了所有spectre etc缓解措施。