C++ Build Insights SDK 與 Visual Studio 2017 和更新版本相容。 若要查看這些版本的文件,請將本文的 Visual Studio 版本選取器控制項設定為 Visual Studio 2017 或更新版本。 其位於此頁面目錄頂端。
編譯程式事件
編譯器
指令行
ENVIRONMENT_VARIABLE
FILE_INPUT
OBJ_OUTPUT
前端通過
後端通行證
編譯程式前端事件
C1_DLL
前端檔案
模板實例化
SYMBOL_NAME
模組
HEADER_UNIT
PRECOMPILED_HEADER
編譯程式後端事件
C2_DLL
整體程式分析
自上而下
由下而上
CODE_GENERATION
線
功能
FORCE_INLINEE
連結器事件
連接
指令行
ENVIRONMENT_VARIABLE
FILE_INPUT
可執行影像輸出
EXP_OUTPUT
IMP_LIB_OUTPUT
LIB_OUTPUT
PASS1
PRE_LTCG_OPT_REF
LTCG
OPT_REF
OPT_ICF
OPT_LBR
PASS2
事件資料表
| 活動 | 屬性 | 說明 |
|---|---|---|
| BACK_END_PASS | 類型 | 活動 |
| 上層 | 編譯器 | |
| 孩子 | C2_DLL | |
| 屬性 | - 輸入來源檔案的絕對路徑 - 輸出物件檔的絕對路徑 |
|
| 擷取類別 |
活動 CompilerPass BackEndPass |
|
| 說明 | 發生在編譯程式後端傳遞的啟動和停止。 此傳遞負責將剖析的 C/C++原始程式碼優化,並將其轉換成機器碼。 | |
| 自下而上 | 類型 | 活動 |
| 上層 | 整體程式分析 | |
| 孩子 | 無 | |
| 屬性 | 無 | |
| 擷取類別 |
活動 自底向上 |
|
| 說明 | 發生在整個程式分析的下移階段的開始和停止。 | |
| C1_DLL | 類型 | 活動 |
| 上層 | 前端通過 | |
| 孩子 |
前端檔案 SYMBOL_NAME 模板實例化 |
|
| 屬性 | 無 | |
| 擷取類別 |
活動 C1DLL |
|
| 說明 | 發生在c1.dll或c1xx.dll調用的開始和停止。 這些 DLL 是編譯程式的 C 和 C++ 前端。 它們只由編譯程式驅動程式叫用(cl.exe)。 | |
| C2_DLL | 類型 | 活動 |
| 上層 |
BACK_END_PASS LTCG |
|
| 孩子 |
CODE_GENERATION 整體程式分析 |
|
| 屬性 | 無 | |
| 擷取類別 |
活動 C2DLL |
|
| 說明 | 發生在c2.dll調用的開始和停止。 此 DLL 是編譯程式的後端。 編譯程式驅動程式會呼叫它(cl.exe)。 使用連結時間程式代碼產生時,連結器也會叫用它(link.exe)。 | |
| 代碼生成 | 類型 | 活動 |
| 上層 | C2_DLL | |
| 孩子 |
功能 線 |
|
| 屬性 | 無 | |
| 擷取類別 |
活動 CodeGeneration |
|
| 說明 | 發生在後端程式代碼產生階段的開始和停止。 | |
| 命令列 | 類型 | 簡單事件 |
| 上層 |
編譯器 連接 |
|
| 孩子 | 無 | |
| 屬性 | - 用來叫 用cl.exe 或 link.exe的命令行 | |
| 擷取類別 |
SimpleEvent CommandLine |
|
| 說明 | 在編譯程式和連結器完成評估命令行時發生。 評估的命令行包含透過回應檔傳遞的所有 cl.exe 和 link.exe 參數。 它也包含透過 CL、_CL_、LINK 和 _LINK_等環境變數傳遞cl.exe和link.exe的參數。 | |
| 編譯器 | 類型 | 活動 |
| 上層 | 無 | |
| 孩子 |
BACK_END_PASS 指令行 ENVIRONMENT_VARIABLE FILE_INPUT OBJ_OUTPUT 前端通過 |
|
| 屬性 | - 編譯程式版本 - 工作目錄 - 所叫用 cl.exe的絕對路徑 |
|
| 擷取類別 |
活動 調用 編譯器 |
|
| 說明 | 發生在cl.exe調用的開始和停止。 | |
| 環境變數 | 類型 | 簡單事件 |
| 上層 |
編譯器 連接 |
|
| 孩子 | 無 | |
| 屬性 | - 環境變數的名稱 - 環境變數的值。 |
|
| 擷取類別 |
SimpleEvent 環境變數 |
|
| 說明 | 每次叫用cl.exe或link.exe時發生一次現有的環境變數。 | |
| 可執行檔_圖片_輸出 | 類型 | 簡單事件 |
| 上層 | 連接 | |
| 孩子 | 無 | |
| 屬性 | - DLL 或可執行文件輸出檔的絕對路徑。 | |
| 擷取類別 |
SimpleEvent FileOutput 可執行圖像輸出 |
|
| 說明 | 當其中一個連結器輸入是 DLL 或可執行圖像檔時發生。 | |
| EXP_OUTPUT | 類型 | 簡單事件 |
| 上層 | 連接 | |
| 孩子 | 無 | |
| 屬性 | - .exp 輸出檔的絕對路徑。 | |
| 擷取類別 |
SimpleEvent FileOutput ExpOutput |
|
| 說明 | 當其中一個 連結器輸出是 .exp 檔案時發生。 | |
| 檔案輸入 | 類型 | 簡單事件 |
| 上層 |
編譯器 連接 |
|
| 孩子 | 無 | |
| 屬性 | - 輸入檔的絕對路徑 - 輸入檔的類型 |
|
| 擷取類別 |
SimpleEvent FileInput |
|
| 說明 | 發生於宣告 cl.exe 或 link.exe 輸入。 | |
| FORCE_INLINEE | 類型 | 簡單事件 |
| 上層 | 功能 | |
| 孩子 | 無 | |
| 屬性 | - 強制內嵌函式的名稱。 - 強制內嵌函式的大小,以中繼指令計數表示。 |
|
| 擷取類別 |
活動 ForceInlinee |
|
| 說明 | 發生於透過 關鍵詞使用 __forceinline 強制內嵌至另一個函式時。 |
|
| FRONT_END_FILE | 類型 | 活動 |
| 上層 |
C1_DLL 前端檔案 |
|
| 孩子 |
前端檔案 模板實例化 |
|
| 屬性 | - 檔案的絕對路徑。 | |
| 擷取類別 |
活動 FrontEndFile |
|
| 說明 | 當編譯程式前端啟動並停止處理檔案時發生。 這個事件是遞歸的。 當前端剖析包含的檔案時,會發生遞歸。 | |
| 前端處理階段 | 類型 | 活動 |
| 上層 | 編譯器 | |
| 孩子 |
C1_DLL 模組 HEADER_UNIT PRECOMPILED_HEADER |
|
| 屬性 | - 輸入來源檔案的絕對路徑 - 輸出物件檔的絕對路徑 |
|
| 擷取類別 |
活動 CompilerPass FrontEndPass |
|
| 說明 | 發生在編譯程式前端傳遞的啟動和停止。 此傳遞負責剖析 C/C++原始程式碼,並將其轉換成中繼語言。 | |
| 功能 | 類型 | 活動 |
| 上層 |
CODE_GENERATION 線 自上而下 |
|
| 孩子 | FORCE_INLINEE | |
| 屬性 | - 函式的名稱 | |
| 擷取類別 |
活動 功能 |
|
| 說明 | 在開始和結束產生函式的程式代碼時發生。 | |
| HEADER_UNIT | 類型 | 活動 |
| 上層 | 前端通過 | |
| 孩子 | 無 | |
| 屬性 | 無 | |
| 擷取類別 |
SimpleEvent TranslationUnitType HeaderUnit |
|
| 說明 | 發生在前端階段的開頭,並表示正在處理標頭單位轉譯單位。 | |
| IMP_LIB_OUTPUT | 類型 | 簡單事件 |
| 上層 | 連接 | |
| 孩子 | 無 | |
| 屬性 | - 匯入連結庫輸出檔的絕對路徑。 | |
| 擷取類別 |
SimpleEvent FileOutput ImpLibOutput |
|
| 說明 | 當其中一個連結器輸出是匯入連結庫時發生。 | |
| LIB_OUTPUT | 類型 | 簡單事件 |
| 上層 | 連接 | |
| 孩子 | 無 | |
| 屬性 | - 靜態庫輸出檔的絕對路徑。 | |
| 擷取類別 |
SimpleEvent FileOutput LibOutput |
|
| 說明 | 當其中一個連結器輸出是靜態連結庫時發生。 | |
| 連接 | 類型 | 活動 |
| 上層 | 無 | |
| 孩子 |
指令行 ENVIRONMENT_VARIABLE 可執行影像輸出 EXP_OUTPUT FILE_INPUT IMP_LIB_OUTPUT LIB_OUTPUT PASS1 PASS2 |
|
| 屬性 | - 鏈接器版本 - 工作目錄 - 叫 用link.exe的絕對路徑 |
|
| 擷取類別 |
活動 調用 連結器 |
|
| 說明 | 發生在link.exe調用的開始和停止。 | |
| LTCG | 類型 | 活動 |
| 上層 | PASS1 | |
| 孩子 | C2_DLL | |
| 屬性 | 無 | |
| 擷取類別 |
活動 LTCG |
|
| 說明 | 發生在連結時間程式代碼產生開始和停止時。 | |
| 模組 | 類型 | 活動 |
| 上層 | 前端通過 | |
| 孩子 | 無 | |
| 屬性 | 無 | |
| 擷取類別 |
SimpleEvent TranslationUnitType 模組 |
|
| 說明 | 發生在前端階段的開頭,並表示正在處理模組轉譯單位。 | |
| OBJ_OUTPUT | 類型 | 簡單事件 |
| 上層 | 編譯器 | |
| 孩子 | 無 | |
| 屬性 | - .obj輸出檔案的絕對路徑 | |
| 擷取類別 |
SimpleEvent FileOutput ObjOutput |
|
| 說明 | 針對cl.exe所產生的每個.obj輸出發生一次。 | |
| OPT_ICF | 類型 | 活動 |
| 上層 | PASS1 | |
| 孩子 | 無 | |
| 屬性 | 無 | |
| 擷取類別 |
活動 OptICF |
|
| 說明 | 發生於相同 COMDAT 折疊 (/OPT:ICF) 連結器優化的開始和停止。 | |
| OPT_LBR | 類型 | 活動 |
| 上層 | PASS1 | |
| 孩子 | 無 | |
| 屬性 | 無 | |
| 擷取類別 |
活動 OptLBR |
|
| 說明 | 發生在長分支 (/OPT:LBR) 連結器優化的開始和停止。 | |
| OPT_REF | 類型 | 活動 |
| 上層 | PASS1 | |
| 孩子 | 無 | |
| 屬性 | 無 | |
| 擷取類別 |
活動 OptRef |
|
| 說明 | 發生於未參考函式的開始和停止,以及數據消除 (/OPT:REF) 連結器優化。 | |
| PASS1 | 類型 | 活動 |
| 上層 | 連接 | |
| 孩子 |
LTCG OPT_ICF OPT_LBR OPT_REF |
|
| 屬性 | 無 | |
| 擷取類別 |
活動 Pass1 |
|
| 說明 | 發生在連結器傳遞 1 的開始和停止。 | |
| PASS2 | 類型 | 活動 |
| 上層 | 連接 | |
| 孩子 | 無 | |
| 屬性 | 無 | |
| 擷取類別 |
活動 Pass2 |
|
| 說明 | 發生在連結器傳遞 2 的開始和停止。 | |
| PRECOMPILED_HEADER | 類型 | 活動 |
| 上層 | 前端通過 | |
| 孩子 | 無 | |
| 屬性 | 無 | |
| 擷取類別 |
SimpleEvent TranslationUnitType 預編譯標頭 |
|
| 說明 | 發生在前端階段的開頭,並表示正在處理先行編譯標頭 (PCH) 轉譯單位。 | |
| PRE_LTCG_OPT_REF | 類型 | 活動 |
| 上層 | PASS1 | |
| 孩子 | 無 | |
| 屬性 | 無 | |
| 擷取類別 |
活動 PreLTCGOptRef |
|
| 說明 | 發生在連結器優化傳遞的開始和停止時,可排除未參考的函式和數據 (/OPT:REF)。 它會在產生連結時間程式代碼之前完成。 | |
| SYMBOL_NAME | 類型 | 簡單事件 |
| 上層 | C1_DLL | |
| 孩子 | 無 | |
| 屬性 | - 類型索引鍵 - 類型的名稱 |
|
| 擷取類別 |
SimpleEvent SymbolName |
|
| 說明 | 在前端階段結束時發生:針對範本具現化所涉及的每一種類型一次。 索引鍵是型別的數值標識符,而名稱則是其文字表示法。 類型索引鍵在所分析的追蹤內是唯一的。 不過,來自不同編譯程式前端傳遞的不同索引鍵可能會指向相同的類型。 比較不同編譯程式前端階段之間的類型需要使用其名稱。 在編譯程式前端階段結束時發出SYMBOL_NAME事件,所有範本具現化都已發生。 | |
| TEMPLATE_INSTANTIATION | 類型 | 活動 |
| 上層 |
C1_DLL 前端檔案 模板實例化 |
|
| 孩子 | 模板實例化 | |
| 屬性 | - 特製化類型的索引鍵 - 主要範本類型的索引鍵 - 具現化的範本類型 |
|
| 擷取類別 |
活動 TemplateInstantiation |
|
| 說明 | 發生在範本具現化的開頭和結尾。 主要範本類型 (例如vector) 會具現化,導致特製化類型(例如 )。std::vector<int> 這兩種類型都會提供索引鍵。
使用 SYMBOL_NAME 事件,將索引鍵轉換成類型的名稱。 類型索引鍵在所分析的追蹤內是唯一的。 不過,來自不同編譯程式前端傳遞的不同索引鍵可能會指向相同的類型。 比較不同編譯程式前端階段之間的類型需要使用符號名稱。 這個事件是遞歸的。 在某些情況下,當前端具現化巢狀範本時,就會發生遞歸。 |
|
| 線 | 類型 | 活動 |
| 上層 |
CODE_GENERATION 自上而下 |
|
| 孩子 | 功能 | |
| 屬性 | 無 | |
| 擷取類別 |
活動 線程 |
|
| 說明 | 發生在編譯程式後端線程執行的開頭和結尾。 暫停的線程會被視為結束。 正在喚醒的線程會被視為已啟動。 | |
| 自上而下 | 類型 | 活動 |
| 上層 | 整體程式分析 | |
| 孩子 |
功能 線 |
|
| 屬性 | 無 | |
| 擷取類別 |
活動 TopDown |
|
| 說明 | 發生於整個程式分析從上到下階段的開始和停止。 | |
| TRANSLATION_UNIT_TYPE | 類型 | 活動 |
| 上層 | 前端通過 | |
| 孩子 |
模組 HEADER_UNIT PRECOMPILED_HEADER |
|
| 屬性 | - 翻譯單位的類型。 | |
| 擷取類別 |
SimpleEvent TranslationUnitType |
|
| 說明 | 發生在前端階段的開頭。 此類型會識別此傳遞是否正在處理模組、標頭單位或先行編譯標頭。 | |
| WHOLE_PROGRAM_ANALYSIS | 類型 | 活動 |
| 上層 | C2_DLL | |
| 孩子 |
自下而上 自上而下 |
|
| 屬性 | 無 | |
| 擷取類別 |
活動 WholeProgramAnalysis |
|
| 說明 | 發生在連結時間程式代碼產生之整個程式分析階段的開始和停止。 |