【问题标题】:Using Intel Vtune to profile Application from Qt Creator使用 Intel Vtune 从 Qt Creator 分析应用程序
【发布时间】:2014-05-12 06:19:48
【问题描述】:

我想在 Windows 7 上使用 Vtune 从 QtCreator 分析应用程序。但是 Vtune 基本上是为 Visual Studio 应用程序制作的,所以我必须在我的函数名称和发布版本中的指令之间建立链接。 其实我在 Hotspots 中只有伪名 func@address,它不可用。

通过探索英特尔 Vtune 的“入门”,我发现我必须在我的发布版本中启用调试信息,但如何在 QtCreator 中执行?

来自“使用调试信息”文件:

为了提供准确的性能数据并启用源分析, 英特尔® VTune™ 放大器需要二进制文件的调试信息 它分析的文件。如果在 二进制文件,VTune 放大器静态识别功能 边界并将热点地址分配给生成的伪名称 func@address 用于此类功能。

如果没有调试信息,调用堆栈窗格可能不会展开 正确调用堆栈以进行用户模式采样和跟踪分析 类型。此外,在某些情况下,它可能需要更多时间 最终确定没有调试的模块的结果 信息。

在 Windows* 操作系统上,PDB 文件提供调试信息。 确保您的系统和应用程序库/可执行文件都有 PDB 文件。使用优化编译您的目标并开始分析 它的性能。

默认情况下,Microsoft Visual Studio* IDE 不生成 PDB 发布模式中的信息。使用 VTune 获得更好的结果 放大器,手动启用符号生成。对于系统库, 使用 Microsoft* 符号服务器下载所需的 PDB 文件 来自 Microsoft* 网站。请按照以下步骤确保 VTune Amplifier 使用系统和您自己的调试信息 图书馆。

我尝试了一些方法,例如:-编辑 file.pro 以更改发布版本

QMAKE_CXXFLAGS_RELEASE += -g
QMAKE_CFLAGS_RELEASE += -g
QMAKE_LFLAGS_RELEASE =
  • 配置调试版本。

但它并没有改变任何东西,我仍然没有打印函数名称

非常感谢任何意见。

【问题讨论】:

    标签: c++ windows qt profiling intel-vtune


    【解决方案1】:

    是的,对于 VTune(或其他类似的分析工具),您需要“发布构建”(即开启优化)并开启调试信息。 QTCreator 默认不创建这种发布+调试的配置。

    对于 Windows MS 编译器工具链案例,这意味着您必须补充使用附加 /Zi 编译和/DEBUG 链接器选项发布配置。

    为了在 QTCreator 中传播这些附加选项使用以下步骤(另请参见下面的屏幕截图):

    • 在编辑器中打开 qtcreator 项目文件 (***.pro)
    • 在“TARGET”之前添加以下行

    QMAKE_CXXFLAGS+=-Zi QMAKE_LFLAGS+=/DEBUG

    • 现在,在构建您的项目时,这些选项将自动应用于 Debug 和 Release 配置(Debug 已经有了它,所以应该不是问题)
    • 现在您可以使用 VTune 分析您的发布版本

    还有一些次要注释:

    1. Similar procedure (with QMAKE_CXXFLAGS) is also applicable to MinGW/GCC or any other toolchains with appropriate options (-g, -gdwarf-2, etc)
    2. 如果您不想影响所有配置,可以使用 QT 项目编译指示在配置之间对 QMAKE_CXXFLAGS 进行条件化
    3. 如果您想分析 QT 标准库的内部结构,那么您还必须通过使用 /DQT*** 等额外选项调整 QMAKE_LFLAGS 来链接 QT 库的调试版本;您可以在构建默认调试配置时通过查看 QT“编译器输出”窗口来了解这些内容。

    【讨论】:

    • 谢谢您,我已经找到了一个伪解决方案,您的回答帮助我完成了它。现在我可以拥有 QT 标准库内部了,这会很棒!
    【解决方案2】:
    1. 确保您使用的是 VTun eupdate 7 或更高版本
    2. 如果您使用默认的 MinGW 工具链,请确保通过传递 -gdwarf-2(或 -g3 -gdwarf-2)使用 DWARF 调试格式
    3. 如果你使用 MSVC 工具链 /Zi 应该被传递给编译器和 /DEBUG 给链接器

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 2011-09-08
      相关资源
      最近更新 更多