VSInstr

VSInstr 工具用于检测二进制文件。 它通过使用下面的语法进行调用:

VSInstr [/U] filename [/options]

下表描述 VSInstr 工具选项:

选项

说明

Help?

显示帮助。

U

将重定向的控制台输出写为 Unicode 格式。 它必须是指定的第一个选项。

@filename

指定其中每行均包含一个命令选项的响应文件的名称。 不使用引号。

OutputPath:path

指定检测映像的目标目录。 如果没有指定输出路径,则通过在文件名后追加“Orig”重命名原始二进制文件,并保存在相同目录下,然后检测二进制文件的副本。

Exclude:funcspec

指定将由探测从检测中排除的函数规范。 当函数中的分析探测插入导致不可预知的或不需要的结果时,它将十分有用。

不要使用引用同一二进制文件中的函数的 ExcludeInclude 选项。

您可以用单独的 Exclude 选项指定多个函数规范。

funcspec 被定义为:

[namespace<separator1>] [class<separator2>]function

<separator1> 在本机代码中为 ::,在托管代码中为 .。

<separator2> 始终为 ::

代码覆盖率支持 Exclude

支持通配符 *。 例如,若要排除命名空间中的所有函数,请使用:

MyNamespace::*

可以使用 VSInstr /DumpFuncs 列出指定的二进制文件中各函数的完整名称。

Include:funcspec

指定二进制文件中要使用探测检测的函数规范。 二进制文件中的所有其他函数将不被检测。

您可以用单独的 Include 选项指定多个函数规范。

不要使用引用同一二进制文件中的函数的 IncludeExclude 选项。

代码覆盖率不支持 Include

funcspec 被定义为:

[namespace<separator1>] [class<separator2>]function

<separator1> 在本机代码中为 ::,在托管代码中为 .。

<separator2> 始终为 ::

支持通配符 *。 例如,若要包括命名空间中的所有函数,请使用:

MyNamespace::*

可以使用 VSInstr /DumpFuncs 列出指定的二进制文件中各函数的完整名称。

DumpFuncs

列出指定映像内的函数。 不执行检测。

ExcludeSmallFuncs

从检测中排除小型函数(不执行任何函数调用的短函数)。 ExcludeSmallFuncs 选项可以减少检测开销,从而提高检测速度。

排除小型函数也减少了 .vsp 文件的大小和分析所需的时间。

Mark:{Before|After|Top|Bottom},funcname,markid

插入分析标记(用来确定报告中数据的界限的标识符),您可以用该标记在 .vsp 报告文件中标识数据范围的起始或结束位置。

Before - 紧挨在目标函数入口的前面。

After - 紧挨在目标函数出口的后面。

Top - 紧挨在目标函数入口的后面。

Bottom - 紧挨在目标函数中的每个返回的前面。

funcname - 目标函数的名称

Markid - 一个用作分析标记的标识符的正整数(长型)。

Coverage

执行覆盖率检测。 它仅可与下列选项一起使用:VerboseOutputPathExcludeLogfile

Verbose

Verbose 选项用于查看有关检测过程的详细信息。

NoWarn[:[Message Number[;Message Number]]]

取消显示所有或特定警告。

Message Number - 警告编号。 如果省略了 Message Number,将禁止显示所有警告。

有关更多信息,请参见 VSInstr 警告

Control:{Thread|Process|Global}

指定下列 VSInstr 数据收集控制选项的分析级别:

Start

StartOnly

Suspend

StopOnly

SuspendOnly

ResumeOnly

Thread - 指定线程级别的数据收集控制函数。 只为当前线程启动或停止分析。 其他线程的分析状态不受影响。 默认值为线程。

Process - 指定进程级别的分析数据收集控制函数。 为当前进程中的所有线程启动或停止分析。 其他进程的分析状态不受影响。

Global - 指定全局级别(跨进程)的数据收集控制函数。

如果没有指定分析级别,将出错。

Start:{Inside|Outside},funcname

将数据收集限定为目标函数以及该函数调用的子函数。

Inside - 将 StartProfile 函数插入紧跟在目标函数入口后面的位置。 将 StopProfile 函数插入到紧在目标函数中的每个返回的前面。

Outside - 将 StartProfile 函数紧挨在目标函数的每个调用前面插入。 将 StopProfile 函数插入到紧在目标函数的每个调用的后面。

funcname - 目标函数的名称。

Suspend:{Inside|Outside},funcname

将目标函数以及该函数调用的子函数排除在数据收集范围之外。

Inside - 将 SuspendProfile 函数插入紧跟在目标函数入口后面的位置。 将 ResumeProfile 函数插入到紧在目标函数中的每个返回的前面。

Outside - 将 SuspendProfile 函数紧挨在目标函数入口的前面插入。 将 ResumeProfile 函数插入到紧在目标函数的出口的后面。

funcname - 目标函数的名称。

如果目标函数包含 StartProfile 函数,则 SuspendProfile 函数插入在它前面。 如果目标函数包含 StopProfile 函数,则 ResumeProfile 函数插入在它后面。

StartOnly:{Before|After|Top|Bottom},funcname

在分析运行期间开始数据收集。 它在指定位置插入 StartProfile API 函数。

Before - 紧挨在目标函数入口的前面。

After - 紧挨在目标函数出口的后面。

Top - 紧挨在目标函数入口的后面。

Bottom - 紧挨在目标函数中的每个返回的前面。

funcname - 目标函数的名称。

StopOnly:{Before|After|Top|Bottom},funcname

在分析运行期间中止数据收集。 它在指定位置插入 StopProfile 函数。

Before - 紧挨在目标函数入口的前面。

After - 紧挨在目标函数出口的后面。

Top - 紧挨在目标函数入口的后面。

Bottom - 紧挨在目标函数中的每个返回的前面。

funcname - 目标函数的名称。

SuspendOnly:{Before|After|Top|Bottom},funcname

在分析运行期间中止数据收集。 它在指定位置插入 SuspendProfile API。

Before - 紧挨在目标函数入口的前面。

After - 紧挨在目标函数出口的后面。

Top - 紧挨在目标函数入口的后面。

Bottom - 紧挨在目标函数中的每个返回的前面。

funcname - 目标函数的名称。

如果目标函数包含 StartProfile 函数,则 SuspendProfile 函数插入在它前面。

ResumeOnly:{Before|After|Top|Bottom},funcname

在分析运行期间开始或继续数据收集。

它通常用于在 SuspendOnly 选项停止分析以后启动分析。 它在指定位置插入 ResumeProfile API。

Before - 紧挨在目标函数入口的前面。

After - 紧挨在目标函数出口的后面。

Top - 紧挨在目标函数入口的后面。

Bottom - 紧挨在目标函数中的每个返回的前面。

funcname - 目标函数的名称。

如果目标函数包含 StopProfile 函数,则 ResumeProfile 函数插入在它后面。

请参见

参考

VSPerfMon

VSPerfCmd

VSPerfReport

VSInstr 警告

其他资源

分析工具报告视图