共用方式為


VSInstr

VSInstr 工具是用來檢測二進位檔。 使用下列語法叫用:

VSInstr [/U] filename [/options]

下表說明 VSInstr 工具選項:

選項。 描述
Help? 顯示說明。
U 將重新導向的主控台輸出以 Unicode 寫入。 務必要優先指定此選項。
@filename 指定回應檔的名稱,此檔中的每一行都包含一個命令選項。 請勿使用引號。
OutputPath :path 指定檢測映像的目的目錄。 如果未指定輸出路徑,會重新命名原始的二進位檔,在相同目錄中將 "Orig" 附加到檔案名稱,然後檢測二進位檔的複本。
排除: funcspec 指定探查時要從檢測中排除的函式規格。 這在分析函式中的探查插入卻造成無法預期或不想要的結果時很有用。

請勿使用 ExcludeInclude 選項來參考相同二進位檔中的函式。

您可以使用不同的 Exclude 選項來指定多個函式規格。

funcspec 會定義為:

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

<separator1 > 對於原生程式碼而言是 ::,對於 Managed 程式碼而言則是 .

<separator2> 一律為 ::

程式碼涵蓋範圍支援 Exclude

支援萬用字元 *。 例如,要排除命名空間中的所有函式,可使用︰

MyNamespace::*

您可以使用 VSInstr /DumpFuncs,列出所指定二進位檔中函式的完整名稱。
包括: funcspec 指定二進位檔中的函式規格以使用探查來檢測。 二進位檔中的所有其他函式則不檢測。

您可以使用不同的 Include 選項來指定多個函式規格。

請勿使用 IncludeExclude 選項來參考相同二進位檔中的函式。

程式碼涵蓋範圍不支援 Include

funcspec 會定義為:

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

<separator1 > 對於原生程式碼而言是 ::,對於 Managed 程式碼而言則是 .

<separator2> 一律為 ::

支援萬用字元 *。 例如,要包含命名空間中的所有函式,可使用︰

MyNamespace::*

您可以使用 VSInstr /DumpFuncs,列出所指定二進位檔中函式的完整名稱。
DumpFuncs 列出指定映像中的函式。 不會執行任何檢測。
ExcludeSmallFuncs 從檢測中排除小型函式,其為不會進行任何函式呼叫的精簡函式。 ExcludeSmallFuncs 選項的檢測負荷較低,因此可改善檢測速度。

排除小型函式,也會減少 .vsp 的檔案大小和分析所需的時間。
Mark:{Before|After|Top|Bottom},funcname,markid 插入設定檔標記 (用來分隔報表中資料的識別碼),您可以用來識別 .vsp 報告檔中某個資料範圍的開頭或結尾。

Before - 緊接在目標函式進入之前。

After - 緊跟在目標函式結束之後。

Top - 緊跟在目標函式進入之後。

Bottom - 緊接在目標函式中的每個傳回之前。

funcname - 目標函式的名稱

Markid - 正整數 (長整數),可用來當做設定檔標記的識別碼。
涵蓋範圍 執行涵蓋範圍檢測。 它只能搭配下列選項使用: VerboseOutputPathExcludeLogfile
詳細資訊 [詳細資訊] 選項是用來檢視有關檢測處理序的詳細資訊。
NoWarn [:[Message Number[;Message Number]]] 隱藏所有或特定的警告。

Message Number - 警告編號。 如果省略 Message Number,則會隱藏所有警告。

如需詳細資訊,請參閱 VSInstr 警告
控制: { 線程 | 進程全域 | } 指定下列 VSInstr 資料收集控制選項的程式碼剖析層級︰

啟動

StartOnly

暫止

StopOnly

SuspendOnly

ResumeOnly

Thread - 指定執行緒層級的資料收集控制函式。 只會針對目前的執行緒啟動或停止程式碼剖析。 不會影響其他執行緒的程式碼剖析狀態。 預設值為 Thread。

Process - 指定處理序層級的程式碼剖析資料收集控制函式。 可針對目前處理序中的所有執行緒啟動或停止程式碼剖析。 不會影響其他處理序的程式碼剖析狀態。

Global - 指定全域層級 (跨處理序) 的資料收集控制函式。

如果您沒有指定程式碼剖析層級,就會發生錯誤。
開始:內部 | { },funcname 限制只對目標函式和該函式呼叫的子函式收集資料。

Inside - 在目標函式進入之後,立即插入 StartProfile 函式。 在目標函式中的每個傳回之前,立即插入 StopProfile 函式。

Outside - 在每次呼叫目標函式之前,立即插入 StartProfile 函式。 在每次呼叫目標函式之後,立即插入 StopProfile 函式。

funcname - 目標函式的名稱。
暫停:內部 | { },funcname 排除對目標函式和該函式呼叫的子函式收集資料。

Inside - 在目標函式進入之後,立即插入 SuspendProfile 函式。 在目標函式中的每個傳回之前,立即插入 ResumeProfile 函式。

Outside - 在目標函式進入之前,立即插入 SuspendProfile 函式。 在從目標函式離開之後,立即插入 ResumeProfile 函式。

funcname - 目標函式的名稱。

如果目標函式包含 StartProfile 函式,請在它之前插入 SuspendProfile 函式。 如果目標函式包含 StopProfile 函式,請在它之後插入 ResumeProfile 函式。
StartOnly:{在上下方之前 | | | },funcname 在執行程式碼剖析期間開始資料收集。 在指定位置插入 StartProfile API 函式。

Before - 緊接在目標函式進入之前。

After - 緊跟在目標函式結束之後。

Top - 緊跟在目標函式進入之後。

Bottom - 緊接在目標函式中的每個傳回之前。

funcname - 目標函式的名稱。
StopOnly:{Before|After|Top|Bottom},funcname 在執行程式碼剖析期間暫止資料收集。 在指定位置插入 StopProfile API 函式。

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 函式。

另請參閱