VSInstr

VSInstr ツールは、バイナリをインストルメント化するために使用します。 VSInstr ツールは、次の構文を使用して起動します。

VSInstr [/U] filename [/options]  

VSInstr ツールのオプションの説明を次の表に示します。

オプション 説明
Help または ? ヘルプを表示します。
U リダイレクトされたコンソール出力を Unicode で書き込みます。 これは、最初に指定する必要があるオプションです。
@filename 1 行につき 1 つのコマンド オプションを含む応答ファイルの名前を指定します。 引用符は使用しないでください。
OutputPath :path インストルメント化されたイメージの保存先ディレクトリを指定します。 出力パスを指定しなかった場合、元のバイナリは同じディレクトリ内で "Orig" という文字列を付け加えたファイル名に変更され、バイナリのコピーがインストルメント化されます。
Exclude :funcspec プローブによるインストルメンテーションから除外する関数の仕様を指定します。 このオプションは、関数へのプロファイリング プローブの挿入によって予測不可能な結果や好ましくない結果が引き起こされる場合に便利です。

同じバイナリ内の関数を参照する Exclude オプションと Include オプションは併用しないでください。

別個の Exclude オプションを使用して複数の関数の仕様を指定できます。

funcspec は次のように定義されます。

[namespace<separator1>] [class<separator2>] 関数

<separator1> はネイティブ コードの場合は ::、マネージ コードの場合は . です。

<separator2> は常に :: です

Exclude は、コード カバレッジでサポートされています。

ワイルドカード文字 * がサポートされています。 たとえば、名前空間のすべての関数を除外するには、次を使用します。

MyNamespace::*

VSInstr /DumpFuncs を使用して、指定したバイナリ内の関数の完全な名前を一覧表示できます。
Include :funcspec プローブでインストルメント化するバイナリ内の関数の仕様を指定します。 バイナリ内の他のすべての関数はインストルメント化されません。

別個の Include オプションを使用して複数の関数の仕様を指定できます。

同じバイナリ内の関数を参照する Include オプションと Exclude オプションは併用しないでください。

Include は、コード カバレッジでサポートされていません。

funcspec は次のように定義されます。

[namespace<separator1>] [class<separator2>] 関数

<separator1> はネイティブ コードの場合は ::、マネージ コードの場合は . です。

<separator2> は常に :: です

ワイルドカード文字 * がサポートされています。 たとえば、名前空間のすべての関数を含めるには、次を使用します。

MyNamespace::*

VSInstr /DumpFuncs を使用して、指定したバイナリ内の関数の完全な名前を一覧表示できます。
DumpFuncs 指定したイメージ内の関数を一覧表示します。 インストルメンテーションは実行されません。
ExcludeSmallFuncs 小規模関数 (関数呼び出しを行わない短い関数) をインストルメンテーションから除外します。 ExcludeSmallFuncs オプションを指定すると、インストルメンテーション オーバーヘッドが軽減されてインストルメンテーションの速度が向上します。

小規模関数を除外すると、.vsp ファイルのサイズが小さくなり、解析に要する時間も短くなります。
Mark:{Before&#124;After&#124;Top&#124;Bottom},funcname,markid .vsp レポート ファイル内のデータ範囲の先頭または末尾を識別するために使用できるプロファイル マーク (レポート内のデータを区切るために使用する識別子) を挿入します。

Before - 対象の関数に入る直前。

After - 対象の関数が終了した直後。

Top - 対象の関数に入った直後。

Bottom - 対象の関数の各復帰の直前。

funcname - 対象の関数の名前

Markid - プロファイル マークの識別子として使用する正の整数 (long)。
Coverage カバレッジ インストルメンテーションを実行します。 これと併用できるオプションは VerboseOutputPathExcludeLogfile だけです。
Verbose Verbose オプションは、インストルメンテーション プロセスに関する詳細情報を表示するために使用します。
NoWarn [:[Message Number[;Message Number]]] すべてまたは特定の警告を抑制します。

Message Number - 警告番号。 Message Number を省略した場合、すべての警告が抑制されます。

詳細については、「VSInstr の警告」を参照してください。
Control :{ Thread &#124; Process &#124; Global } 次の VSInstr データ収集制御オプションのプロファイリング レベルを指定します。

Start

StartOnly

Suspend

StopOnly

SuspendOnly

ResumeOnly

Thread - スレッド レベルのデータ収集制御関数を指定します。 プロファイリングは、現在のスレッドに対してのみ開始または停止されます。 他のスレッドのプロファイリング状態は影響を受けません。 既定値は thread です。

Process - プロセス レベルのプロファイリング データ収集制御関数を指定します。 プロファイリングは、現在のプロセスのすべてのスレッドに対して開始または停止されます。 他のプロセスのプロファイリング状態は影響を受けません。

Global - グローバル レベル (プロセス間) のデータ収集制御関数を指定します。

プロファイリング レベルを指定しない場合は、エラーが発生します。
Start :{ Inside &#124; Outside },funcname データ収集を対象の関数とその関数から呼び出される子関数に制限します。

Inside - 対象の関数に入った直後に StartProfile 関数を挿入します。 対象の関数が戻るたびに、その直前に StopProfile 関数を挿入します。

Outside - 対象の関数を呼び出すたびに、その直前に StartProfile 関数を挿入します。 対象の関数を呼び出すたびに、その直後に StopProfile 関数を挿入します。

funcname - 対象の関数の名前。
Suspend :{ Inside &#124; Outside },funcname 対象の関数とその関数から呼び出される子関数に関するデータ収集を除外します。

Inside - 対象の関数に入った直後に SuspendProfile 関数を挿入します。 対象の関数が戻るたびに、その直前に ResumeProfile 関数を挿入します。

Outside - 対象の関数に入る直前に SuspendProfile 関数を挿入します。 対象の関数が終了した直後に ResumeProfile 関数を挿入します。

funcname - 対象の関数の名前。

対象の関数に StartProfile 関数が含まれている場合は、その前に SuspendProfile 関数が挿入されます。 対象の関数に StopProfile 関数が含まれている場合は、その後に ResumeProfile 関数が挿入されます。
StartOnly: { Before &#124; After &#124; Top &#124; Bottom },funcname プロファイリング実行中にデータ収集を開始します。 このオプションは、StartProfile API 関数を指定の位置に挿入します。

Before - 対象の関数に入る直前。

After - 対象の関数が終了した直後。

Top - 対象の関数に入った直後。

Bottom - 対象の関数の各復帰の直前。

funcname - 対象の関数の名前。
StopOnly:{Before&#124;After&#124;Top&#124;Bottom},funcname プロファイリング実行中にデータ収集を停止します。 このオプションは、StopProfile 関数を指定の位置に挿入します。

Before - 対象の関数に入る直前。

After - 対象の関数が終了した直後。

Top - 対象の関数に入った直後。

Bottom - 対象の関数の各復帰の直前。

funcname - 対象の関数の名前。
SuspendOnly:{Before&#124;After&#124;Top&#124;Bottom},funcname プロファイリング実行中にデータ収集を停止します。 このオプションは、SuspendProfile API を指定の位置に挿入します。

Before - 対象の関数に入る直前。

After - 対象の関数が終了した直後。

Top - 対象の関数に入った直後。

Bottom - 対象の関数の各復帰の直前。

funcname - 対象の関数の名前。

対象の関数に StartProfile 関数が含まれている場合は、その前に SuspendProfile 関数が挿入されます。
ResumeOnly:{Before&#124;After&#124;Top&#124;Bottom},funcname プロファイリング実行中にデータ収集を開始または再開します。

通常、このオプションは、SuspendOnly オプションによってプロファイリングが停止された後にプロファイリングを再開するために使用します。 このオプションは、ResumeProfile API を指定の位置に挿入します。

Before - 対象の関数に入る直前。

After - 対象の関数が終了した直後。

Top - 対象の関数に入った直後。

Bottom - 対象の関数の各復帰の直前。

funcname - 対象の関数の名前。

対象の関数に StopProfile 関数が含まれている場合は、その後に ResumeProfile 関数が挿入されます。

関連項目

VSPerfMon
VSPerfCmd
VSPerfReport
VSInstr の警告
パフォーマンス レポートのビュー