1

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

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

从“使用调试信息”文件中:

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

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

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

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

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

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

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

非常感谢任何输入。

4

2 回答 2

3

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

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

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

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

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创作者截图

于 2014-04-02T10:52:18.907 回答
0
  1. Make sure you use VTun eupdate 7 or later
  2. If you are using default MinGW toolchain make sure you use DWARF debug format by passing -gdwarf-2 (or -g3 -gdwarf-2)
  3. If you are using MSVC toolchain /Zi shuld be passed to the compiler and /DEBUG to the linker
于 2014-04-02T08:51:15.527 回答