【问题标题】:How do I generate symbol information to use with Linux version of Intel's VTune Amplifier?如何生成符号信息以用于 Linux 版本的英特尔 VTune 放大器?
【发布时间】:2011-06-09 10:16:24
【问题描述】:

我正在使用 Intel VTune Amplifier XE 2011 来分析我的程序的性能。我希望能够在分析结果中查看源代码,文档说我需要提供符号信息。不幸的是,它没有说明在编译我的程序时如何生成该符号信息。在 VTune 的 Windows 版本中,我所要做的就是提供 Microsoft Visual Studio 将生成的“.pdb”文件。我可以使用 g++ 创建类似的文件来提供此符号信息吗?

【问题讨论】:

    标签: performance intel intel-vtune profiling


    【解决方案1】:

    gcc -g <your stuff> 应该是所有必要的。不过我用的是旧版本。

    较新的命令行选项是here

    编辑: 这个SO answer 可能比这里的任何东西都更有价值。

    【讨论】:

    • 是的,但这会减慢程序的执行速度吗?
    • 不——它只是让可执行文件变大了一点。
    • 分析几乎总是这样。您允许探查器收集的信息越多,它收集的速度就越慢。 -g 应该不会有太大影响。
    • @JimR:我以为他问的是用 -g 编译是否会使程序运行变慢,当然不是。
    • 太好了,我会用 -g 选项编译。
    【解决方案2】:

    你试过用 -g 编译吗?通常这就是为调试器、分析器等生成符号数据所需的全部内容。

    顺便说一下,对于 Linux 上的分析,Zoom from RotateRight.com 比 VTune 更易于使用。

    【讨论】:

    • ++ 用于缩放。 (我放了一个链接。)
    【解决方案3】:

    使用 GCC 获取可执行文件以包含调试信息的最“经典”方法是指定其他海报提到的“-g”命令行选项。这不会导致任何性能损失,因为调试信息驻留在不属于代码或数据段的 ELF 部分中。也就是说,.debug* 部分在正常程序执行期间不会映射到内存中,它只是调试器将它们放入的调试时间。

    对于任何从事生产软件的开发人员来说,另一个有用的考虑因素是使用separate debug information files。假设如上所述使用“-g”编译程序,然后使用 objcopy 实用程序将包含调试信息的 ELF 部分复制到单独的文件中,并将原始二进制文件的链接添加到单独的调试信息文件中。这对于能够存储您发布给客户的位的调试信息非常有用,以便可以进行事后调试。当然,对于发布位的性能分析也是如此。

    【讨论】:

      猜你喜欢
      • 2015-01-18
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多