共用方式為


C++ Build Insights SDK:事件數據表

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.dllc1xx.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.exelink.exe的命令行
擷取類別 SimpleEvent
CommandLine
說明 在編譯程式和連結器完成評估命令行時發生。 評估的命令行包含透過回應檔傳遞的所有 cl.exelink.exe 參數。 它也包含透過 CL、_CL_、LINK 和 _LINK_等環境變數傳遞cl.exelink.exe的參數
編譯器 類型 活動
上層
孩子 BACK_END_PASS
指令行
ENVIRONMENT_VARIABLE
FILE_INPUT
OBJ_OUTPUT
前端通過
屬性 - 編譯程式版本
- 工作目錄
- 所叫用 cl.exe的絕對路徑
擷取類別 活動
調用
編譯器
說明 發生在cl.exe調用的開始和停止。
環境變數 類型 簡單事件
上層 編譯器
連接
孩子
屬性 - 環境變數的名稱
- 環境變數的值。
擷取類別 SimpleEvent
環境變數
說明 每次叫用cl.exelink.exe發生一次現有的環境變數。
可執行檔_圖片_輸出 類型 簡單事件
上層 連接
孩子
屬性 - DLL 或可執行文件輸出檔的絕對路徑。
擷取類別 SimpleEvent
FileOutput
可執行圖像輸出
說明 當其中一個連結器輸入是 DLL 或可執行圖像檔時發生。
EXP_OUTPUT 類型 簡單事件
上層 連接
孩子
屬性 - .exp 輸出檔的絕對路徑。
擷取類別 SimpleEvent
FileOutput
ExpOutput
說明 當其中一個 連結器輸出是 .exp 檔案時發生。
檔案輸入 類型 簡單事件
上層 編譯器
連接
孩子
屬性 - 輸入檔的絕對路徑
- 輸入檔的類型
擷取類別 SimpleEvent
FileInput
說明 發生於宣告 cl.exelink.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
說明 發生在連結時間程式代碼產生之整個程式分析階段的開始和停止。