ひきこもりプログラマ

C++のこととか。

Visual Studioでインストルメンテーションによるプロファイルが失敗するのはプロジェクト参照が原因

2013-10-03 | Program

Visual Studio 2010で,Performanceというアプリケーションプロジェクトと,AというDLLプロジェクトを作り,両プロジェクトをインストルメンテーションしてプロファイルを実行しようとしたのですが,エラーになります。


Warning VSP2317: モニターは、カーネル モード実行の検出のためのハードウェア パフォーマンス カウンターを取得できませんでした。経過時間とアプリケーション時間は同じです。
プロファイルを開始しました。
同じ場所で C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\A.dll をインストルメント化しています
情報 VSP3049: 小さい関数はインストルメンテーションから除外されます。
Microsoft(R) VSInstr Post-Link Instrumentation 10.0.40219 x86
Copyright (C) Microsoft Corp. All rights reserved.
処理するファイル:
C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\A.dll --> C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\A.dll
元のファイルは C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\A.dll.orig にバックアップされました
ファイル C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\A.dll を正しくインストルメントしました
同じ場所で C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\Performance.exe をインストルメント化しています
情報 VSP3049: 小さい関数はインストルメンテーションから除外されます。
Microsoft(R) VSInstr Post-Link Instrumentation 10.0.40219 x86
Copyright (C) Microsoft Corp. All rights reserved.
処理するファイル:
C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\Performance.exe --> C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\Performance.exe
元のファイルは C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\Performance.exe.orig にバックアップされました
ファイル C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\Performance.exe を正しくインストルメントしました
別のプロセスで使用されているため、プロセスはファイル 'C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\A.dll' にアクセスできません。
C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Report131003.vsp に書き込まれたデータ。
プロファイルが終了しました。
ファイルにデータ バッファーが含まれていません
ファイルにデータ バッファーが含まれていません
失敗した分析
別のプロセスで使用されているため、プロセスはファイル 'C:\Users\satomi\documents\visual studio 2010\Projects\Performance\Debug\A.dll' にアクセスできません。
プロファイルが完了しました。

で,原因はPerformanceプロジェクトがAプロジェクトを参照していたことでした(共通プロパティ/Frameworkと参照)。この参照を削除して,PerformanceプロジェクトがAプロジェクトを明示的にリンクするようにしたところ(構成プロパティ/リンカー/入力),無事にプロファイルを実行できました。

しかし…仕事でプロファイリングしたいソリューションにはプロジェクトが30個以上あるんですよね…。これぜんぶ修正するのかと思うとげんなりします。