私は、このリンクを見つけた:
https://developercommunity.visualstudio.com/content/problem/80750/analyze-c-performance-prf0002-instrumentation-fail.html
この答えはよさそうです。ここで
は、以下の答えは:私はvsinstr.exe
まず、64ビットのVisual Studio 2013のバージョンを使用していた
、これはVSInstr.exeのVS2017バージョンのバグです。問題は、VS2013ツールセットで構築されたバイナリを計測することができないことです。私が正しくリコールした場合、新しいリーダーが古いツールで作成されたPDBを読み取らないようにする、PDBリーダーコンポーネントで発生した変更がありました。このシナリオでは、バイナリとPDBを生成するために古いツールセットが使用されていますが、新しいVSInstr.exeがインスツルメンテーションの試行に使用されています。新しいVSInstrは新しいPDBリーダーを使用し、古いツールで生成されたPDBを読み取ることができません。あなたはこの問題を解決するためにあなたが最後に何もすることはできませんが、私は回避策を提案することができます。
この問題を回避するには、コマンドラインから古いVSInstr.exeを使用することに戻すことができます。古いVSInstr.exeは古いツールセットによって生成されたPDBを読み取ることができ、計測は成功です。私は私のシステムでこれを試してみて、それは私のために働く。次の6つの手順を試してみてください。
VS2013デベロッパーコマンドプロンプトを管理者として開きます。 (これ以降の操作はすべてこの管理者のcmdプロンプトで行われます) ターゲットアプリケーションをインスツルメントします。この場合、私はInstrumentationDemoApp \ Releaseフォルダに移動して、 "vsinstr terrain.exe/excludesmallfuncs"とタイプしました。計装は成功を示すはずです。 "vsperfcmd/start:trace /out:test.vsp"というコマンドでプロファイラモニタを起動します。これにより、インスツルメントされたプロセスによって放出されるトレース情報を収集するバックグラウンドモニタが起動します。 ターゲットアプリケーションを実行します。この場合、terrain.exeを実行しました。 "vsperfcmd/shutdown"コマンドを使用してプロファイラモニタをシャットダウンします。このコマンドを実行すると、バックグラウンドプロファイラモニタがシャットダウンし、 "test.vsp"ファイルが書き出されます。 Visual Studio 2017で結果の "test.vsp"ファイルを開きます。VS2013のVSInstr.exeで計測されたアプリケーションのデータを使用してVS2013のモニタでVSPファイルを作成したにもかかわらず、VS2017リーダーはファイルをよく読み、プロファイリングレポートを表示してください。 さらに簡単な回避策は、ツールセットをVS2015またはVS2017に変更することです。この場合、ツールセットはVS2017バージョンのVSInstr.exeがインストールできるバイナリとPDBを生成します。サンプルプロジェクトでは、ツールセットを変更した後、IDEのすべてがインストゥルメンテーションプロファイリングを行います。もちろん、私はあなたがすでにこの回避策を知っていると信じていますが、このツールの難しさは、新しいツールセットがプロジェクトをきれいに構築できず、結果のバイナリが異なるCRTを使用するため、コンパイラおよびCRTまたは他の関連するツールセットライブラリ。プロファイリングを機能させるには、新しいツールセットをきれいに構築するための余分な作業や、新しいライブラリなどに伴うリスクを回避する価値がありません。
上記の回避策が動作するかどうか教えてくださいあなたのために。あなたができなければ、私はさらに掘り下げることができます。
現時点では、VS2017 VSInstr.exeがVS2013ツールセットで構築されたアプリケーションを計測するようにする予定はありません。しかし私たちはこれを将来に留めておきます。 VSInstr.exeを改善した場合、これは我々が検討する改善点の1つです。 Visual Studioをより良くするためにお手伝いいただきありがとうございます。
アレンデンバー
Visual Studioの私が提案し、回避策を試してみましたが、ために1つのマイナーな修正を行った5:37 こんにちはアレン、
で
LDRSアレンデンバー[MSFT]・7月22日ステップ3:OUTの代わりにOUTPUTが必要なので、vsperfcmd/start:trace /output:test.vsp
この後、新しいVSバージョンで結果のvspを開くことができ、workaroudが機能します。
ありがとうございました。調査と回避策をありがとうございました!
実際にはどのツールチェーンですか? – user0042
私はVisual Studio 2017を使用していますが、2013年のツールチェーンでコンパイルしています。 – Derek
このプロジェクトでは、プラットフォームツールセット= "Visual Studio 2013(v120)" – Derek