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