C++ Build Insights SDK:事件表

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
说明 在链接时间代码生成的整个程序分析阶段开始和结束时发生。