C++ Build Insights SDK 与 Visual Studio 2017 及更高版本兼容。 若要查看这些版本对应的文档,请将本文的 Visual Studio“版本”选择器控件设置为 Visual Studio 2017 或更高版本。 它位于此页面上目录表的顶部。
编译器事件
编译器
COMMAND_LINE
ENVIRONMENT_VARIABLE
FILE_INPUT
OBJ_OUTPUT
FRONT_END_PASS
BACK_END_PASS
编译器前端事件
C1_DLL
FRONT_END_FILE
TEMPLATE_INSTANTIATION
SYMBOL_NAME
模块
HEADER_UNIT
PRECOMPILED_HEADER
编译器后端事件
C2_DLL
WHOLE_PROGRAM_ANALYSIS
TOP_DOWN
BOTTOM_UP
CODE_GENERATION
线
功能
FORCE_INLINEE
链接器事件
连接
COMMAND_LINE
ENVIRONMENT_VARIABLE
FILE_INPUT
EXECUTABLE_IMAGE_OUTPUT
EXP_OUTPUT
IMP_LIB_OUTPUT
LIB_OUTPUT
PASS1
PRE_LTCG_OPT_REF
LTG
OPT_REF
OPT_ICF
OPT_LBR
PASS2
事件表
事件 | properties | 说明 |
---|---|---|
BACK_END_PASS | 类型 | 活动 |
父项 | 编译器 | |
孩子 | C2_DLL | |
属性 | - 输入源文件的绝对路径 - 输出对象文件的绝对路径 |
|
Capture 类 |
活动 CompilerPass BackEndPass |
|
说明 | 在编译器后端传递开始和结束时发生。 此传递负责优化已分析的 C/C++ 源代码,并将它转换为计算机代码。 | |
BOTTOM_UP | 类型 | 活动 |
父项 | WHOLE_PROGRAM_ANALYSIS | |
孩子 | 无 | |
属性 | 无 | |
Capture 类 |
活动 BottomUp |
|
说明 | 在整个程序分析的由下而上传递开始和结束时发生。 | |
C1_DLL | 类型 | 活动 |
父项 | FRONT_END_PASS | |
孩子 |
FRONT_END_FILE SYMBOL_NAME TEMPLATE_INSTANTIATION |
|
属性 | 无 | |
Capture 类 |
活动 C1DLL |
|
说明 | 在 c1.dll 或 c1xx.dll 调用开始和结束时发生。 这些 DLL 是编译器的 C 和 C++ 前端。 它们仅由编译器驱动程序 (cl.exe) 调用。 | |
C2_DLL | 类型 | 活动 |
父项 |
BACK_END_PASS LTG |
|
孩子 |
CODE_GENERATION WHOLE_PROGRAM_ANALYSIS |
|
属性 | 无 | |
Capture 类 |
活动 C2DLL |
|
说明 | 在 c2.dll 调用开始和结束时发生。 此 DLL 是编译器的后端。 它由编译器驱动程序 (cl.exe) 调用。 当使用链接时间代码生成时,链接器 (link.exe) 也会调用它。 | |
CODE_GENERATION | 类型 | 活动 |
父项 | C2_DLL | |
孩子 |
功能 线 |
|
属性 | 无 | |
Capture 类 |
活动 CodeGeneration |
|
说明 | 在后端的代码生成阶段开始和结束时发生。 | |
COMMAND_LINE | 类型 | 简单事件 |
父项 |
编译器 连接 |
|
孩子 | 无 | |
属性 | - 用于调用 cl.exe 或 link.exe 的命令行 | |
Capture 类 |
SimpleEvent CommandLine |
|
说明 | 在编译器和链接器对命令行求值完成后发生。 已求值的命令行包括所有通过响应文件传递的 cl.exe 和 link.exe 参数。 它还包括通过环境变量(如 CL、_CL_、LINK 和 _LINK_)传递的 cl.exe 和 link.exe 参数。 | |
编译器 | 类型 | 活动 |
父项 | 无 | |
孩子 |
BACK_END_PASS COMMAND_LINE ENVIRONMENT_VARIABLE FILE_INPUT OBJ_OUTPUT FRONT_END_PASS |
|
属性 | - 编译器版本 - 工作目录 - 已调用的 cl.exe 的绝对路径 |
|
Capture 类 |
活动 调用 编译器 |
|
说明 | 在 cl.exe 调用开始和结束时发生。 | |
ENVIRONMENT_VARIABLE | 类型 | 简单事件 |
父项 |
编译器 连接 |
|
孩子 | 无 | |
属性 | - 环境变量的名称 - 环境变量的值。 |
|
Capture 类 |
SimpleEvent 环境变量 |
|
说明 | 在调用 cl.exe 或 link.exe 时,对每个现有环境变量发生一次。 | |
EXECUTABLE_IMAGE_OUTPUT | 类型 | 简单事件 |
父项 | 连接 | |
孩子 | 无 | |
属性 | - DLL 或可执行输出文件的绝对路径。 | |
Capture 类 |
SimpleEvent FileOutput ExecutableImageOutput |
|
说明 | 当链接器输入之一为 DLL 或可执行图像文件时发生。 | |
EXP_OUTPUT | 类型 | 简单事件 |
父项 | 连接 | |
孩子 | 无 | |
属性 | - .exp 输出文件的绝对路径。 | |
Capture 类 |
SimpleEvent FileOutput ExpOutput |
|
说明 | 当链接器输出之一是 .exp 文件时发生。 | |
FILE_INPUT | 类型 | 简单事件 |
父项 |
编译器 连接 |
|
孩子 | 无 | |
属性 | - 输入文件的绝对路径 - 输入文件的类型 |
|
Capture 类 |
SimpleEvent FileInput |
|
说明 | 为了公布 cl.exe 或 link.exe 输入而发生。 | |
FORCE_INLINEE | 类型 | 简单事件 |
父项 | 功能 | |
孩子 | 无 | |
属性 | - 强制内联函数的名称。 - 强制内联函数的大小,表示为中间指令计数。 |
|
Capture 类 |
活动 ForceInlinee |
|
说明 | 当使用 __forceinline 关键字将一个函数强制内联到另一个函数时发生。 |
|
FRONT_END_FILE | 类型 | 活动 |
父项 |
C1_DLL FRONT_END_FILE |
|
孩子 |
FRONT_END_FILE TEMPLATE_INSTANTIATION |
|
属性 | - 文件的绝对路径。 | |
Capture 类 |
活动 FrontEndFile |
|
说明 | 在编译器前端开始和结束处理文件时发生。 此事件是递归的。 当前端正在分析包含的文件时发生递归。 | |
FRONT_END_PASS | 类型 | 活动 |
父项 | 编译器 | |
孩子 |
C1_DLL 模块 HEADER_UNIT PRECOMPILED_HEADER |
|
属性 | - 输入源文件的绝对路径 - 输出对象文件的绝对路径 |
|
Capture 类 |
活动 CompilerPass FrontEndPass |
|
说明 | 在编译器前端传递开始和结束时发生。 此传递负责分析 C/C++ 源代码,并将它转换为中间语言。 | |
功能 | 类型 | 活动 |
父项 |
CODE_GENERATION 线 TOP_DOWN |
|
孩子 | FORCE_INLINEE | |
属性 | - 函数名称 | |
Capture 类 |
活动 功能 |
|
说明 | 在开始和结束生成函数代码时发生。 | |
HEADER_UNIT | 类型 | 活动 |
父项 | FRONT_END_PASS | |
孩子 | 无 | |
属性 | 无 | |
Capture 类 |
SimpleEvent TranslationUnitType HeaderUnit |
|
说明 | 在前端传递开始时发生,并表示正在处理标头单元翻译单元。 | |
IMP_LIB_OUTPUT | 类型 | 简单事件 |
父项 | 连接 | |
孩子 | 无 | |
属性 | - 导入库输出文件的绝对路径。 | |
Capture 类 |
SimpleEvent FileOutput ImpLibOutput |
|
说明 | 当链接器输出之一是导入库时发生。 | |
LIB_OUTPUT | 类型 | 简单事件 |
父项 | 连接 | |
孩子 | 无 | |
属性 | - 静态库输出文件的绝对路径。 | |
Capture 类 |
SimpleEvent FileOutput LibOutput |
|
说明 | 当链接器输出之一是静态库时发生。 | |
连接 | 类型 | 活动 |
父项 | 无 | |
孩子 |
COMMAND_LINE ENVIRONMENT_VARIABLE EXECUTABLE_IMAGE_OUTPUT EXP_OUTPUT FILE_INPUT IMP_LIB_OUTPUT LIB_OUTPUT PASS1 PASS2 |
|
属性 | - 链接器版本 - 工作目录 - 已调用 link.exe 的绝对路径 |
|
Capture 类 |
活动 调用 链接器 |
|
说明 | 在 link.exe 调用开始和结束时发生。 | |
LTG | 类型 | 活动 |
父项 | PASS1 | |
孩子 | C2_DLL | |
属性 | 无 | |
Capture 类 |
活动 LTG |
|
说明 | 在链接时间代码生成开始和结束时发生。 | |
模块 | 类型 | 活动 |
父项 | FRONT_END_PASS | |
孩子 | 无 | |
属性 | 无 | |
Capture 类 |
SimpleEvent TranslationUnitType 模块 |
|
说明 | 在前端传递开始时发生,并表示正在处理模块翻译单元。 | |
OBJ_OUTPUT | 类型 | 简单事件 |
父项 | 编译器 | |
孩子 | 无 | |
属性 | - .obj 输出文件的绝对路径 | |
Capture 类 |
SimpleEvent FileOutput ObjOutput |
|
说明 | 对由 cl.exe 生成的每个 .obj 输出发生一次。 | |
OPT_ICF | 类型 | 活动 |
父项 | PASS1 | |
孩子 | 无 | |
属性 | 无 | |
Capture 类 |
活动 OptICF |
|
说明 | 在完全相同的 COMDAT 折叠 (/OPT:ICF) 链接器优化开始和结束时发生。 | |
OPT_LBR | 类型 | 活动 |
父项 | PASS1 | |
孩子 | 无 | |
属性 | 无 | |
Capture 类 |
活动 OptLBR |
|
说明 | 在长分支 (/OPT:LBR) 链接器优化开始和结束时发生。 | |
OPT_REF | 类型 | 活动 |
父项 | PASS1 | |
孩子 | 无 | |
属性 | 无 | |
Capture 类 |
活动 OptRef |
|
说明 | 在消除未引用的函数和数据 (/OPT:REF) 的链接器优化开始和结束时发生。 | |
PASS1 | 类型 | 活动 |
父项 | 连接 | |
孩子 |
LTG OPT_ICF OPT_LBR OPT_REF |
|
属性 | 无 | |
Capture 类 |
活动 Pass1 |
|
说明 | 在链接器的传递 1 开始和结束时发生。 | |
PASS2 | 类型 | 活动 |
父项 | 连接 | |
孩子 | 无 | |
属性 | 无 | |
Capture 类 |
活动 Pass2 |
|
说明 | 在链接器的传递 2 开始和结束时发生。 | |
PRECOMPILED_HEADER | 类型 | 活动 |
父项 | FRONT_END_PASS | |
孩子 | 无 | |
属性 | 无 | |
Capture 类 |
SimpleEvent TranslationUnitType PrecompiledHeader |
|
说明 | 在前端传递开始时发生,并表示正在处理预编译标头 (PCH) 翻译单元。 | |
PRE_LTCG_OPT_REF | 类型 | 活动 |
父项 | PASS1 | |
孩子 | 无 | |
属性 | 无 | |
Capture 类 |
活动 PreLTCGOptRef |
|
说明 | 在消除未引用的函数和数据 (/OPT:REF) 的链接器优化传递开始和结束时发生。 它在链接时间代码生成前完成。 | |
SYMBOL_NAME | 类型 | 简单事件 |
父项 | C1_DLL | |
孩子 | 无 | |
属性 | - 类型键 - 类型的名称 |
|
Capture 类 |
SimpleEvent SymbolName |
|
说明 | 在前端传递结束时发生:对模板实例化中涉及的每个类型发生一次。 键是类型的数字标识符,而名称是它的文本表示。 类型键在要分析的跟踪中是唯一的。 不过,来自不同编译器前端传递的不同键可能指向相同的类型。 在不同的编译器前端传递之间比较类型需要使用它们的名称。 SYMBOL_NAME 事件在编译器前端传递结束时发出(在所有模板实例化发生后)。 | |
TEMPLATE_INSTANTIATION | 类型 | 活动 |
父项 |
C1_DLL FRONT_END_FILE TEMPLATE_INSTANTIATION |
|
孩子 | TEMPLATE_INSTANTIATION | |
属性 | - 特殊化类型的键 - 主模板的类型的键 - 已实例化的模板的类型 |
|
Capture 类 |
活动 TemplateInstantiation |
|
说明 | 在模板实例化开始和结束时发生。 主模板类型(如 vector )被实例化,从而生成特殊化类型(如 std::vector<int> )。 为这两种类型提供了键。 使用 SYMBOL_NAME 事件将键转换为类型的名称。 类型键在要分析的跟踪中是唯一的。 不过,来自不同编译器前端传递的不同键可能指向相同的类型。 在不同的编译器前端传递之间比较类型需要使用符号名称。 此事件是递归的。 在某些情况下,当前端正在实例化嵌套模板时,会发生递归。 |
|
线 | 类型 | 活动 |
父项 |
CODE_GENERATION TOP_DOWN |
|
孩子 | 功能 | |
属性 | 无 | |
Capture 类 |
活动 线程 |
|
说明 | 在编译器后端线程执行开始和结束时发生。 挂起的线程被视为已结束。 唤醒的线程被视为已启动。 | |
TOP_DOWN | 类型 | 活动 |
父项 | WHOLE_PROGRAM_ANALYSIS | |
孩子 |
功能 线 |
|
属性 | 无 | |
Capture 类 |
活动 TopDown |
|
说明 | 在整个程序分析的由上而下传递开始和结束时发生。 | |
TRANSLATION_UNIT_TYPE | 类型 | 活动 |
父项 | FRONT_END_PASS | |
孩子 |
模块 HEADER_UNIT PRECOMPILED_HEADER |
|
属性 | - 翻译单元的类型。 | |
Capture 类 |
SimpleEvent TranslationUnitType |
|
说明 | 在前端传递开始时发生。 类型标识此传递是在处理模块、标头单元还是预编译标头。 | |
WHOLE_PROGRAM_ANALYSIS | 类型 | 活动 |
父项 | C2_DLL | |
孩子 |
BOTTOM_UP TOP_DOWN |
|
属性 | 无 | |
Capture 类 |
活动 WholeProgramAnalysis |
|
说明 | 在链接时间代码生成的整个程序分析阶段开始和结束时发生。 |