我在64位平台上使用MinGW来编译一个简单的c ++测试应用程序:
g++ -g3 -c test.cpp
g++ test.o -o test
使用-g3标志test.exe现在应该包含所有必要的符号信息以便对其进行分析...这是正确的吗?
当我使用VTune Amplifyer XE进行热点分析时,它会向我显示一个这样的callstack:
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以获得更有意义的结果?
答案 0 :(得分:2)
VTune可以从2013 Update 7 - http://software.intel.com/en-us/articles/whats-new-update-7-intel-vtune-amplifier-xe-2013#Update7Anchor3
开始分析mingw目标答案 1 :(得分:0)
原因是,目前只有Linux版本的VTune支持标准调试格式,如f.e.侏儒。 Windows版本只能理解Microsoft PDB文件。 显然支持dwarf是Windows版本的功能请求(请参阅this主题)。