0

我在 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 以获得更有意义的结果?

4

2 回答 2

2

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

于 2013-06-05T09:58:51.823 回答
0

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

于 2012-04-13T14:43:49.910 回答