更新: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 选项显示指定映像中的函数。不执行检测。 |