C++ Build Insights SDK: event table

The C++ Build Insights SDK is compatible with Visual Studio 2017 and later. To see the documentation for these versions, set the Visual Studio Version selector control for this article to Visual Studio 2017 or later. It's found at the top of the table of contents on this page.

Compiler events

COMPILER
COMMAND_LINE
ENVIRONMENT_VARIABLE
FILE_INPUT
OBJ_OUTPUT
FRONT_END_PASS
BACK_END_PASS

Compiler front-end events

C1_DLL
FRONT_END_FILE
TEMPLATE_INSTANTIATION
SYMBOL_NAME
MODULE
HEADER_UNIT
PRECOMPILED_HEADER

Compiler back-end events

C2_DLL
WHOLE_PROGRAM_ANALYSIS
TOP_DOWN
BOTTOM_UP
CODE_GENERATION
THREAD
FUNCTION
FORCE_INLINEE

Linker events

LINKER
COMMAND_LINE
ENVIRONMENT_VARIABLE
FILE_INPUT
EXECUTABLE_IMAGE_OUTPUT
EXP_OUTPUT
IMP_LIB_OUTPUT
LIB_OUTPUT
PASS1
PRE_LTCG_OPT_REF
LTCG
OPT_REF
OPT_ICF
OPT_LBR
PASS2

Event table

Event Property Description
BACK_END_PASS Type Activity
Parents COMPILER
Children C2_DLL
Properties - Absolute path to input source file
- Absolute path to output object file
Capture classes Activity
CompilerPass
BackEndPass
Description Occurs at the start and stop of the compiler back-end pass. This pass is responsible for optimizing parsed C/C++ source code and converting it into machine code.
BOTTOM_UP Type Activity
Parents WHOLE_PROGRAM_ANALYSIS
Children None
Properties None
Capture classes Activity
BottomUp
Description Occurs at the start and stop of the whole program analysis' bottom-up pass.
C1_DLL Type Activity
Parents FRONT_END_PASS
Children FRONT_END_FILE
SYMBOL_NAME
TEMPLATE_INSTANTIATION
Properties None
Capture classes Activity
C1DLL
Description Occurs at the start and stop of a c1.dll or c1xx.dll invocation. These DLLs are the C and C++ front end of the compiler. They're invoked solely by the compiler driver (cl.exe).
C2_DLL Type Activity
Parents BACK_END_PASS
LTCG
Children CODE_GENERATION
WHOLE_PROGRAM_ANALYSIS
Properties None
Capture classes Activity
C2DLL
Description Occurs at the start and stop of a c2.dll invocation. This DLL is the back end of the compiler. It's called by the compiler driver (cl.exe). It's also invoked by the linker (link.exe) when link-time code generation is used.
CODE_GENERATION Type Activity
Parents C2_DLL
Children FUNCTION
THREAD
Properties None
Capture classes Activity
CodeGeneration
Description Occurs at the start and stop of the back end's code generation phase.
COMMAND_LINE Type Simple Event
Parents COMPILER
LINKER
Children None
Properties - The command line that was used to invoke cl.exe or link.exe
Capture classes SimpleEvent
CommandLine
Description Occurs when the compiler and linker are done evaluating the command line. The evaluated command line includes all cl.exe and link.exe parameters passed via a response file. It also includes parameters to cl.exe and link.exe passed via environment variables such as CL, _CL_, LINK, and _LINK_.
COMPILER Type Activity
Parents None
Children BACK_END_PASS
COMMAND_LINE
ENVIRONMENT_VARIABLE
FILE_INPUT
OBJ_OUTPUT
FRONT_END_PASS
Properties - Compiler version
- Working directory
- Absolute path to the invoked cl.exe
Capture classes Activity
Invocation
Compiler
Description Occurs at the start and stop of a cl.exe invocation.
ENVIRONMENT_VARIABLE Type Simple Event
Parents COMPILER
LINKER
Children None
Properties - The name of the environment variable
- The value of the environment variable.
Capture classes SimpleEvent
EnvironmentVariable
Description Occurs once for every existing environment variable at the time cl.exe or link.exe is invoked.
EXECUTABLE_IMAGE_OUTPUT Type Simple Event
Parents LINKER
Children None
Properties - The absolute path to a DLL or executable output file.
Capture classes SimpleEvent
FileOutput
ExecutableImageOutput
Description Occurs when one of the linker inputs is a DLL or an executable image file.
EXP_OUTPUT Type Simple Event
Parents LINKER
Children None
Properties - The absolute path to an .exp output file.
Capture classes SimpleEvent
FileOutput
ExpOutput
Description Occurs when one of the linker outputs is an .exp file.
FILE_INPUT Type Simple Event
Parents COMPILER
LINKER
Children None
Properties - The absolute path to the input file
- The type of input file
Capture classes SimpleEvent
FileInput
Description Occurs to announce a cl.exe or link.exe input.
FORCE_INLINEE Type Simple Event
Parents FUNCTION
Children None
Properties - The name of the force-inlined function.
- The size of the force-inlined function, represented as an intermediate instruction count.
Capture classes Activity
ForceInlinee
Description Occurs when a function is being force-inlined into another function through the use of the __forceinline keyword.
FRONT_END_FILE Type Activity
Parents C1_DLL
FRONT_END_FILE
Children FRONT_END_FILE
TEMPLATE_INSTANTIATION
Properties - Absolute path to the file.
Capture classes Activity
FrontEndFile
Description Occurs when the compiler front end starts and stops processing a file. This event is recursive. Recursion happens when the front end is parsing included files.
FRONT_END_PASS Type Activity
Parents COMPILER
Children C1_DLL
MODULE
HEADER_UNIT
PRECOMPILED_HEADER
Properties - Absolute path to input source file
- Absolute path to output object file
Capture classes Activity
CompilerPass
FrontEndPass
Description Occurs at the start and stop of the compiler front-end pass. This pass is responsible for parsing C/C++ source code and converting it into intermediate language.
FUNCTION Type Activity
Parents CODE_GENERATION
THREAD
TOP_DOWN
Children FORCE_INLINEE
Properties - Name of the function
Capture classes Activity
Function
Description Occurs when starting and ending generating the code for a function.
HEADER_UNIT Type Activity
Parents FRONT_END_PASS
Children None
Properties None
Capture classes SimpleEvent
TranslationUnitType
HeaderUnit
Description Occurs at the start of the front-end pass and represents that a header unit translation unit is being processed.
IMP_LIB_OUTPUT Type Simple Event
Parents LINKER
Children None
Properties - The absolute path to an import library output file.
Capture classes SimpleEvent
FileOutput
ImpLibOutput
Description Occurs when one of the linker's outputs is an import library.
LIB_OUTPUT Type Simple Event
Parents LINKER
Children None
Properties - The absolute path to a static library output file.
Capture classes SimpleEvent
FileOutput
LibOutput
Description Occurs when one of the linker's outputs is static library.
LINKER Type Activity
Parents None
Children COMMAND_LINE
ENVIRONMENT_VARIABLE
EXECUTABLE_IMAGE_OUTPUT
EXP_OUTPUT
FILE_INPUT
IMP_LIB_OUTPUT
LIB_OUTPUT
PASS1
PASS2
Properties - Linker version
- Working directory
- Absolute path to the invoked link.exe
Capture classes Activity
Invocation
Linker
Description Occurs at the start and stop of a link.exe invocation.
LTCG Type Activity
Parents PASS1
Children C2_DLL
Properties None
Capture classes Activity
LTCG
Description Occurs at the start and stop of link-time code generation.
MODULE Type Activity
Parents FRONT_END_PASS
Children None
Properties None
Capture classes SimpleEvent
TranslationUnitType
Module
Description Occurs at the start of the front-end pass and represents that a module translation unit is being processed.
OBJ_OUTPUT Type Simple Event
Parents COMPILER
Children None
Properties - The absolute path to the .obj output file
Capture classes SimpleEvent
FileOutput
ObjOutput
Description Occurs once for every .obj output produced by cl.exe.
OPT_ICF Type Activity
Parents PASS1
Children None
Properties None
Capture classes Activity
OptICF
Description Occurs at the start and stop of the identical COMDAT folding (/OPT:ICF) linker optimization.
OPT_LBR Type Activity
Parents PASS1
Children None
Properties None
Capture classes Activity
OptLBR
Description Occurs at the start and stop of the long branch (/OPT:LBR) linker optimization.
OPT_REF Type Activity
Parents PASS1
Children None
Properties None
Capture classes Activity
OptRef
Description Occurs at the start and stop of the unreferenced functions and data elimination (/OPT:REF) linker optimization.
PASS1 Type Activity
Parents LINKER
Children LTCG
OPT_ICF
OPT_LBR
OPT_REF
Properties None
Capture classes Activity
Pass1
Description Occurs at the start and stop of the linker's pass 1.
PASS2 Type Activity
Parents LINKER
Children None
Properties None
Capture classes Activity
Pass2
Description Occurs at the start and stop of the linker's pass 2.
PRECOMPILED_HEADER Type Activity
Parents FRONT_END_PASS
Children None
Properties None
Capture classes SimpleEvent
TranslationUnitType
PrecompiledHeader
Description Occurs at the start of the front-end pass and represents that a precompiled header (PCH) translation unit is being processed.
PRE_LTCG_OPT_REF Type Activity
Parents PASS1
Children None
Properties None
Capture classes Activity
PreLTCGOptRef
Description Occurs at the start and stop of the linker optimization pass that eliminates unreferenced functions and data (/OPT:REF). It's done before link-time code generation.
SYMBOL_NAME Type Simple Event
Parents C1_DLL
Children None
Properties - A type key
- The type's name
Capture classes SimpleEvent
SymbolName
Description Occurs at the end of the front-end pass: once for every type involved in template instantiations. The key is a numerical identifier for the type, while the name is its text representation. Type keys are unique within the trace being analyzed. However, different keys coming from different compiler front-end passes may point to the same type. Comparing types between different compiler front-end passes requires using their names. SYMBOL_NAME events are emitted at the end of a compiler front-end pass, after all template instantiations have taken place.
TEMPLATE_INSTANTIATION Type Activity
Parents C1_DLL
FRONT_END_FILE
TEMPLATE_INSTANTIATION
Children TEMPLATE_INSTANTIATION
Properties - The key for the specialized type
- The key for the primary template's type
- The kind of template that was instantiated
Capture classes Activity
TemplateInstantiation
Description Occurs at the beginning and end of a template instantiation. A primary template type (such as vector) is instantiated, resulting in a specialized type (such as std::vector<int>). A key is given for both types. Use the SYMBOL_NAME event to convert a key into the type's name. Type keys are unique within the trace being analyzed. However, different keys coming from different compiler front-end passes may point to the same type. Comparing types between different compiler front-end passes requires using symbol names. This event is recursive. Recursion happens in some cases when the front end is instantiating nested templates.
THREAD Type Activity
Parents CODE_GENERATION
TOP_DOWN
Children FUNCTION
Properties None
Capture classes Activity
Thread
Description Occurs at the start and end of a compiler back-end thread execution. A thread being suspended is considered ended. A thread being woken up is considered started.
TOP_DOWN Type Activity
Parents WHOLE_PROGRAM_ANALYSIS
Children FUNCTION
THREAD
Properties None
Capture classes Activity
TopDown
Description Occurs at the start and stop of the whole program analysis' top-down pass.
TRANSLATION_UNIT_TYPE Type Activity
Parents FRONT_END_PASS
Children MODULE
HEADER_UNIT
PRECOMPILED_HEADER
Properties - The type of translation unit.
Capture classes SimpleEvent
TranslationUnitType
Description Occurs at the start of the front-end pass. The type identifies whether this pass is processing a module, header unit, or precompiled header.
WHOLE_PROGRAM_ANALYSIS Type Activity
Parents C2_DLL
Children BOTTOM_UP
TOP_DOWN
Properties None
Capture classes Activity
WholeProgramAnalysis
Description Occurs at the start and stop of the whole-program analysis phase of link-time code generation.