VSInstr

更新:2007 年 11 月

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

VSInstr [/U] filename [/options]

下表描述 VSInstr 工具选项:

选项

说明

HELP 或者?

显示帮助。

U

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

@filename

响应文件每行要有一个命令选项。不使用引号。

OUTPUTPATH:path

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

CONTROL:{THREAD|PROCESS|GLOBAL}

CONTROL 选项用于指定下列数据收集控制函数的分析级别:

StartProfile

StopProfile

SuspendProfile

ResumeProfile

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

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

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

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

START:{INSIDE|OUTSIDE},funcname

START 选项用于将数据收集为目标函数和该函数调用的子函数。

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

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

funcname - 目标函数的名称。

SUSPEND:{INSIDE|OUTSIDE},funcname

SUSPEND 选项用于排除对目标函数和该函数调用的子函数的数据收集。

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

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

funcname - 目标函数的名称。

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

STARTONLY:{BEFORE|AFTER|TOP|BOTTOM},funcname

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

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

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

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

BOTTOM - 紧在目标函数的每个返回的前面。

funcname - 目标函数的名称。

STOPONLY:{BEFORE|AFTER|TOP|BOTTOM},funcname

STOPONLY 选项用于在分析运行期间暂停数据收集。它在指定位置插入 StopProfile 函数。

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

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

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

BOTTOM - 紧在目标函数的每个返回的前面。

funcname - 目标函数的名称。

SUSPENDONLY:{BEFORE|AFTER|TOP|BOTTOM},funcname

SUSPENDONLY 选项用于在分析运行期间暂停数据收集。它在指定位置插入 SuspendProfile API。

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

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

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

BOTTOM - 紧在目标函数的每个返回的前面。

funcname - 目标函数的名称。

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

RESUMEONLY:{BEFORE|AFTER|TOP|BOTTOM},funcname

RESUMEONLY 选项用于在分析运行期间开始或继续数据收集。

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

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

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

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

BOTTOM - 紧在目标函数的每个返回的前面。

funcname - 目标函数的名称。

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

EXCLUDE:funcspec

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

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

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

funcspec 被定义为:

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

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

<separator2> 始终为 ::

代码覆盖率支持 EXCLUDE 选项。

若要排除命名空间中的所有函数,请使用通配符:

MyNamespace::*

INCLUDE:funcspec

INCLUDE 选项指定二进制文件中要通过探测进行检测的函数规范。二进制文件中的所有其他函数将不被检测。

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

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

代码覆盖率不支持 INCLUDE 选项。

funcspec 被定义为:

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

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

<separator2> 始终为 ::

EXCLUDESMALLFUNCS

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

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

MARK:{BEFORE|AFTER|TOP|BOTTOM},funcname,markid

MARK 选项将 MarkProfile API 函数插在目标函数的入口或出口处。MarkProfile API 插入分析标记(用来确定报告中数据的界限的标识符),您可以用该标记在 .vsp 报告文件中标识数据范围的起始或结束位置。

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

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

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

BOTTOM - 紧在目标函数的每个返回的前面。

funcname - 目标函数的名称

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

COVERAGE

COVERAGE 选项执行覆盖率检测。它可以与 OUTPUTPATH 选项联合使用。

VERBOSE

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

NOWARN[:[Message Number[;Message Number]]]

NOWARN 选项用于禁止显示所有或特定警告。

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

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

DUMPFUNCS

DUMPFUNCS 选项显示指定映像中的函数。不执行检测。

请参见

参考

VSPerfMon

VSPerfCmd

VSPerfReport

VSInstr 警告

分析工具报告中列的定义