0

単純な C++ テスト アプリケーションをコンパイルするために、64 ビット プラットフォーム用の MinGW を使用しています。

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

その理由は、現在 VTune の Linux バージョンのみが fe dwarf のような標準デバッグ形式をサポートしているためです。Windows バージョンは、Microsoft PDB ファイルのみを認識します。どうやらドワーフのサポートは、Windows バージョンの機能要求です (このスレッドを参照)。

于 2012-04-13T14:43:49.910 に答える