VSInstr
更新:2007 年 11 月
VSInstr 是用來檢測二進位檔的工具,請使用下列語法叫用 (Invoke) 此工具:
VSInstr [/U] filename [/options]
下表說明 VSInstr 工具的選項:
選項 |
說明 |
---|---|
HELP 或 ? |
顯示說明。 |
U |
U 選項會以 Unicode 格式撰寫已重新導向的主控台輸出。它必須是第一個指定的選項。 |
@filename |
回應檔中應該是每行各有一個命令選項。不要使用引號。 |
OUTPUTPATH:path |
已檢測之映像的目的目錄。如果未指定輸出路徑,則會將原始二進位檔在相同目錄中重新命名成為新檔案 (將 "Orig" 附加至檔案名稱),並對該二進位檔的複本進行檢測。 |
CONTROL:{THREAD|PROCESS|GLOBAL} |
CONTROL 是用來指定下列資料收集控制函式的程式碼剖析層級的選項: StartProfile StopProfile SuspendProfile ResumeProfile THREAD - 指定執行緒層級的資料收集控制函式。程式碼剖析只會針對目前的執行緒啟動或停止。其他執行緒的程式碼剖析狀態不受影響。預設值為 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> 是 ::,而 Managed 程式碼則為 .。 <separator2> 永遠為 ::。 EXCLUDE 選項支援程式碼涵蓋範圍。 若要排除命名空間中的所有函式,請使用萬用字元 (Wildcard Character): MyNamespace::* |
INCLUDE:funcspec |
INCLUDE 選項指定二進位檔中要用探查 (Probe) 檢測的函式規格。二進位檔中的其他函式則不會受到檢測。 您可以使用個別的 INCLUDE 選項指定多個函式規格。 請勿使用參考相同二進位檔中函式的 INCLUDE 和 EXCLUDE 選項。 INCLUDE 選項不支援程式碼涵蓋範圍。 funcspec 定義為: [namespace<separator1>] [class<separator2>]function 對於機器碼,<separator1> 是 ::,而 Managed 程式碼則為 .。 <separator2> 永遠為 ::。 |
EXCLUDESMALLFUNCS |
從檢測中排除小型函式,也就是不會進行任何函式呼叫的精簡函式。EXCLUDESMALLFUNCS 選項可降低檢測負荷,從而加快檢測的速度。 排除小型函式也可縮減 .vsp 檔案的大小以及分析所需的時間。 |
MARK:{BEFORE|AFTER|TOP|BOTTOM},funcname,markid |
MARK 選項會在進入目標函式或離開目標函式時,插入 MarkProfile API 函式。MarkProfile API 會插入剖析標記 (用來分隔報告資料的識別項),供您用來識別 .vsp 報告檔中資料範圍的開始或結束。 BEFORE - 緊接在目標函式進入點之前。 AFTER - 緊接在目標函式結束碼後面。 TOP- 緊接在目標函式進入點之後。 BOTTOM - 緊接在每次從目標函式返回之前。 funcname - 目標函式的名稱。 Markid - 正整數 (型別為 long),做為程式碼剖析標記的識別項。 |
COVERAGE |
COVERAGE 選項會執行涵蓋範圍的剖析。此選項不能與 OUTPUTPATH 選項一起使用。 |
VERBOSE |
VERBOSE 是用來檢視有關檢測程序之詳細資訊的選項。 |
NOWARN[:[Message Number[;Message Number]]] |
NOWARN 是用來隱藏全部或特定警告的選項。 Message Number - 警告編號。如果省略 Message Number,則會隱藏所有警告。 如需詳細資訊,請參閱 VSInstr 警告。 |
DUMPFUNCS |
DUMPFUNCS 選項會顯示指定之映像中的函式,但不會執行檢測。 |