带有 mingw 的 Vtune 分析器

Posted

技术标签:

【中文标题】带有 mingw 的 Vtune 分析器【英文标题】:Vtune analyzer with mingw 【发布时间】:2012-04-11 14:33:18 【问题描述】:

我正在使用 64 位平台的 MinGW 来编译一个简单的 c++ 测试应用程序:

g++ -g3 -c test.cpp
g++ test.o -o test

带有 -g3 标志的 test.exe 现在应该包含对其进行分析所需的所有必要符号信息...这是正确的吗?

当我使用 VTune Amplifyer XE 进行热点分析时,它会显示如下调用堆栈:

test.exe![test.exe] - [Unknown]
test.exe![test.exe]+0x15fa - [Unknown]
test.exe![test.exe]+0x13cd - [Unknown]
test.exe![test.exe]+0x14e7 - [Unknown]
kernel32.dll!BaseThreadInitThunk+0x1f33c - [Unknown]
ntdll.dll!RtlUserThreadStart+0x32ca0 - [Unknown]

当单击其中一项时,它会向我显示汇编代码,并且对于最顶部的元素,它会显示:“无法显示源代码和汇编代码”。

这不会改变,如果我在 VTune 项目设置中指定源代码/二进制目录。

我应该如何编译我的程序或设置 VTune 以获得更有意义的结果?

【问题讨论】:

【参考方案1】:

VTune 可以从 2013 Update 7 开始分析 mingw 目标 - http://software.intel.com/en-us/articles/whats-new-update-7-intel-vtune-amplifier-xe-2013#Update7Anchor3

【讨论】:

【参考方案2】:

原因是目前只有 linux 版本的 VTune 支持标准调试格式,如 f.e.矮人。 windows 版本只能理解 microsoft PDB 文件。 显然支持 dwarf 是 windows 版本的功能请求(参见this 线程)。

【讨论】:

以上是关于带有 mingw 的 Vtune 分析器的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们在使用 Vtune 进行分析时需要调试信息?

linux 下 性能分析 vtune类似软件是啥

哪个是使用 VTUNE 进行分析的更好方法:独立或与 MSVC 集成

VTune Amplifier XE 2015 架构分析

使用 VS2012/VTune 进行缓存分析

无法在 DPDK 上重现 Intel Vtune 分析示例的结果