cmake-instrumentation(7)
Добавлено в версии 4.3.
Введение
API инструментирования CMake позволяет собирать данные о времени выполнения, сведения о целях и диагностические сведения о системе во время этапов конфигурирования, генерации, сборки, тестирования и установки проекта CMake.
Во всех взаимодействиях с API инструментирования CMake необходимо указывать версию API и версию данных. Существует только одна версия API — см. API v1.
Примечание
Эта возможность доступна только для проектов, использующих генераторы Makefile, генераторы Ninja или FASTBuild.
Обзор
Инструментирование CMake работает в два основных этапа: сбор данных и индексация.
Сбор данных — это процесс, в ходе которого CMake записывает данные инструментирования в дерево сборки проекта. Инструментируемые таким образом команды варьируются от сборок в целом до отдельных команд компиляции. Полный список инструментируемых команд приведён в разделе Файл фрагмента v1.
Собранные данные накапливаются до начала индексации — процесса объединения сгенерированных данных. Индексация выполняется при наступлении событий, называемых «хуками», которые можно настроить в файлах запросов v1. Создаётся файл индекса v1, который передаётся всем заданным пользователем функциям обратного вызова для обработки данных. После выполнения всех функций обратного вызова CMake удаляет файлы.
Если пользовательские функции обратного вызова не нужны, CMake может отправить данные инструментирования в CDash или создать файл трассировки Google для визуализации.
Сбор данных
При выполнении команды с включённым инструментированием в дереве сборки проекта создаётся файл фрагмента v1, содержащий данные, относящиеся к этой команде. Эти файлы сохраняются до завершения индексации.
CMake задаёт глобальные свойства RULE_LAUNCH_COMPILE, RULE_LAUNCH_LINK и RULE_LAUNCH_CUSTOM, чтобы оборачивать каждый вызов команды компиляции, компоновки и пользовательской команды в средство запуска, которое выполняет инструментирование и записывает файл фрагмента v1. Если проект сконфигурирован с помощью CTestUseLaunchers, средство запуска будет собирать данные инструментирования помимо выполнения обмена данными, который обычно обрабатывается этим модулем.
Индексация
Индексация — это процесс объединения сгенерированных данных инструментирования. Доступные хуки для запуска индексации включают такие варианты, как выполнение после каждой сборки или каждого вызова ctest, и настраиваются в файлах запросов v1. При срабатывании хука создаётся файл индекса со списком файлов фрагментов, созданных после предыдущей индексации. Этот файл индекса передаётся пользовательским командам функций обратного вызова для обработки данных.
Индексацию также можно выполнить вручную, вызвав ctest --collect-instrumentation.
Индексация и последующие функции обратного вызова не выполняются одновременно в одном дереве сборки. Если несколько хуков запускают индексацию одновременно, используется блокировка на основе файла, чтобы обеспечить завершение одной индексации, выполнение всех её функций обратного вызова и удаление данных инструментирования до начала следующей индексации.
Функции обратного вызова
В файлах запросов v1 пользователи могут указать список функций обратного вызова для обработки данных, собранных этой возможностью.
При выполнении индексации запускается каждая указанная функция обратного вызова, которой в качестве дополнительного аргумента передаётся путь к созданному файлу индекса v1.
Эти функции обратного вызова, заданные на уровне пользователя или проекта, должны считывать данные инструментирования и выполнять необходимые действия по их обработке. После завершения всех функций обратного вызова CMake автоматически удаляет файл индекса и перечисленные в нём фрагменты. Обратите внимание: функция обратного вызова не должна вручную перемещать или удалять эти файлы данных, поскольку они могут понадобиться другим функциям обратного вызова.
Если индексация запускается повторно до завершения функций обратного вызова, созданный файл индекса будет содержать только данные инструментирования, полученные после предыдущей индексации.
Включение инструментирования
Инструментирование можно включить для отдельного проекта CMake или для всех проектов CMake, которые пользователь конфигурирует и собирает. Во всех случаях «запрос» представляет собой запрос на выполнение инструментирования. Подробные сведения о настройке этой возможности см. в разделе Файлы запросов v1.
Включение инструментирования на уровне проекта
Код проекта может содержать запросы на инструментирование, использующие команду cmake_instrumentation().
Кроме того, файлы запросов можно вручную разместить в <build>/.cmake/instrumentation/<version>/query/ в корне дерева сборки. Эта версия CMake поддерживает только одну схему версий — API v1.
Включение инструментирования на уровне пользователя
Инструментирование можно настроить на уровне пользователя, разместив файлы запросов в <config_dir>/instrumentation/<version>/query/ каталога CMAKE_CONFIG_DIR.
Включение инструментирования для отправки данных в CDash
Инструментирование можно включить при использовании CTest в режиме клиента панели мониторинга, задав переменную среды CTEST_USE_INSTRUMENTATION. При этом параметр dynamicSystemInformation включается автоматически.
В следующей таблице показано, как каждому типу инструментируемой команды соответствует тип XML-файла CTest.
XML-файл CTest | |
|---|---|
|
|
|
|
|
|
|
|
|
|
| не используется! |
|
|
|
|
|
|
|
|
|
|
По умолчанию передаваемая в CDash командная строка обрезается на первом пробеле. Чтобы передавать полную командную строку (включая аргументы), задайте для CTEST_USE_VERBOSE_INSTRUMENTATION значение 1.
Кроме того, для включения инструментирования CDash можно использовать файлы запросов v1 с параметрами cdashSubmit и cdashVerbose.
Чтобы отправленный файл Build.xml правильно группировал файлы фрагментов, все команды конфигурирования и сборки должны выполняться с CTest в режиме клиента панели мониторинга.
API v1
Версия API определяет структуру каталога инструментирования, а также общий формат файлов запросов и аргументов команды cmake_instrumentation().
API инструментирования v1 располагается в каталоге instrumentation/v1/ внутри <build>/.cmake/ для выходных данных и запросов на уровне проекта или внутри <config_dir>/ для запросов на уровне пользователя. Компонент v1 этого каталога обозначает версию API. В нём находятся следующие подкаталоги:
-
query/ -
Содержит файлы запросов, созданные пользователями или клиентами. Файл с расширением
.jsonраспознаётся как файл запроса. Владельцем такого файла является создавший его клиент или пользователь. -
query/generated/ -
Содержит файлы запросов, созданные проектом CMake с помощью команды
cmake_instrumentation()или переменнойCTEST_USE_INSTRUMENTATION. Владельцем этих файлов является CMake; они автоматически удаляются и создаются заново на этапе конфигурирования CMake. -
data/ -
Содержит данные инструментирования, собранные для проекта. Все файлы данных принадлежат CMake; другие процессы ни в коем случае не должны их удалять. Собранные здесь данные сохраняются до завершения индексации и выполнения всех функций обратного вызова.
-
data/index/ -
Подмножество собранных данных, содержащее все файлы индекса v1.
-
data/content/ -
Подмножество собранных данных, содержащее все файлы содержимого CMake v1.
-
data/trace/ -
Подмножество собранных данных, содержащее файл трассировки Google, созданный при последней индексации. В отличие от других файлов данных, последний файл трассировки сохраняется после индексации и выполнения всех функций обратного вызова до следующей индексации.
-
data/compile-trace/ -
Подмножество собранных данных, содержащее файлы трассировки, созданные компилятором, если включён параметр
compileTrace. -
cdash/ -
Содержит временные файлы, используемые внутри системы для создания XML-содержимого, отправляемого в CDash.
Версия данных
Версия данных определяет содержимое выходных файлов, создаваемых API v1 в процессе сбора данных и индексации.
Файлы запросов v1 или вызов команды cmake_instrumentation() должны запрашивать определённую версию данных. Пользовательским функциям обратного вызова, заданным в этом запросе, будут переданы файлы данных v1 соответствующей версии.
В настоящее время поддерживается только основная версия 1, а максимальная поддерживаемая дополнительная версия — 1. Новый номер основной версии создаётся при удалении или изменении формата ранее включённых данных таким образом, что скрипты для их анализа могут оказаться несовместимыми с новым форматом. Новый номер дополнительной версии создаётся при появлении новых данных.
Файлы запросов v1
Любой файл с расширением .json в каталоге instrumentation/v1/query/ распознаётся как запрос данных инструментирования.
Эти файлы должны содержать объект JSON со следующими ключами. Ключ version является обязательным, все остальные поля необязательны.
-
version -
Версия данных для создаваемых файлов фрагментов.
В файлах запросов её можно указать как целочисленную основную версию или как объект с элементами
majorиminor. Например,1и{ "major": 1, "minor": 0 }запрашивают версию1.0. Указывать дополнительную версию необязательно. CMake всегда будет создавать данные инструментирования для самой новой дополнительной версии, даже если запрошена более ранняя дополнительная версия.В настоящее время поддерживается только основная версия
1. Файлы запросов с дополнительной версией, не превышающей максимальную, указанную в разделе Версия данных, принимаются; запросы с неизвестной версией данных игнорируются. -
callbacks -
Список строк командной строки для функций обратного вызова, обрабатывающих собранные данные инструментирования. При запуске этих функций полный путь к файлу индекса v1 добавляется к аргументам, указанным в строке.
-
hooks -
Список строк, задающих моменты автоматического запуска индексации. Это интервалы, в которые следует объединять данные инструментирования и вызывать пользовательские функции обратного вызова для их обработки. Элементы этого списка должны быть одним из следующих значений:
postGenerate-
preBuild(вызывается при вызовеninjaилиmake) -
postBuild(вызывается после завершенияninjaилиmake) -
preCMakeBuild(вызывается при вызовеcmake --build) -
postCMakeBuild(вызывается после завершенияcmake --build) postCMakeInstallpostCMakeWorkflowpostCTest
preBuildиpostBuildне поддерживаются при использовании генераторовMSYS MakefilesилиFASTBuild. Кроме того, они не срабатывают, если средство сборки вызывается командойcmake --build. -
options -
Список строк, включающих определённые необязательные возможности, в том числе сбор некоторых дополнительных данных. Элементы этого списка должны быть одним из следующих значений:
-
staticSystemInformation -
Включает сбор статических сведений о хост-компьютере, на котором запущен CMake. Эти данные собираются во время индексации и включаются в созданный файл индекса v1.
-
dynamicSystemInformation -
Включает сбор динамических сведений о хост-компьютере, на котором запущен CMake. Данные собираются для каждого файла фрагмента v1, созданного CMake, и включают сведения, полученные непосредственно до и после выполнения команды.
-
captureOutput -
Добавлено в версии 4.4.
Включает сбор вывода команд в создаваемые файлы фрагментов v1. Если этот параметр включён, фрагменты для команд
compile,link,custom,testиinstallсодержат поляstdoutиstderr.Доступно начиная с версии данных
1.1. -
compileTrace -
Добавлено в версии 4.4.
Включает сбор JSON-файлов, созданных параметром
-ftime-traceкомпилятора Clang. Если такие файлы создаются для инструментируемой команды компиляции, они копируются в каталог инструментированияdataи указываются в фрагменте компиляции.Доступно начиная с версии данных
1.1. -
cdashSubmit -
Включает добавление данных инструментирования в CDash. Это эквивалентно включению переменной среды
CTEST_USE_INSTRUMENTATION. -
cdashVerbose -
Включает передачу в CDash полных, не обрезанных команд. Эквивалентно включению переменных среды
CTEST_USE_VERBOSE_INSTRUMENTATIONиCTEST_USE_INSTRUMENTATION. -
trace -
Включает создание файла трассировки Google во время индексации для визуализации данных из собранных файлов фрагментов v1.
-
Указанные callbacks будут вызываться при заданных хуках как минимум. Если имеется несколько файлов запросов, значения callbacks, hooks и options из этих файлов объединяются. Поэтому, если какой-либо файл запроса содержит hooks, все callback из всех файлов запросов будут выполняться при каждом hook из всех файлов запросов. Кроме того, если какой-либо файл запроса запрашивает необязательные данные с помощью поля options, все файлы фрагментов будут содержать соответствующие данные. Пользовательские callbacks должны корректно обрабатывать наличие этих необязательных данных, поскольку их может запросить другой, не связанный с ними запрос.
Формат JSON описан в машиночитаемом виде в файле this JSON schema.
Пример:
{
"version": 1,
"callbacks": [
"/usr/bin/python callback.py",
"/usr/bin/cmake -P callback.cmake arg",
],
"hooks": [
"postCMakeBuild",
"postCMakeInstall"
],
"options": [
"staticSystemInformation",
"dynamicSystemInformation",
"captureOutput",
"cdashSubmit",
"trace"
]
}
В этом примере после каждого вызова cmake --build или cmake --install в <build>/.cmake/instrumentation/v1/data/index создаётся файл индекса index-<timestamp>.json со списком файлов фрагментов данных, созданных после предыдущей индексации. В указанном порядке выполняются команды /usr/bin/python callback.py index-<timestamp>.json и /usr/bin/cmake -P callback.cmake arg index-<timestamp>.json. Файл индекса будет содержать данные staticSystemInformation, а каждый указанный в нём файл фрагмента будет содержать данные dynamicSystemInformation и захваченный вывод команды. Кроме того, файл индекса будет содержать путь к созданному файлу трассировки Google. После завершения обеих функций обратного вызова файл индекса и перечисленные в нём файлы данных (включая файлы фрагментов, но не файл трассировки) будут удалены из дерева сборки проекта. Данные инструментирования будут присутствовать в XML-файлах, отправляемых в CDash, но строки команд будут обрезаны, поскольку параметр cdashVerbose не был включён.
Файлы данных v1
В рамках API v1 создаются четыре типа файлов данных: файл фрагмента v1, файл индекса v1, файл содержимого CMake v1 и файл трассировки Google. Эти файлы находятся в <build>/.cmake/instrumentation/v1/data/ в дереве сборки проекта.
Обратите внимание: обозначение v1 для этих файлов относится к API v1. Версия данных этих файлов указывается в поле version в содержимом файла.
Файл фрагмента v1
Файлы фрагментов создаются для каждой команды компиляции, компоновки и пользовательской команды, вызванной на этапе сборки или установки CMake, и содержат данные инструментирования о выполненной команде. Кроме того, файлы фрагментов создаются для следующих операций:
- Этап конфигурирования CMake
- Этап генерации CMake
- Весь этап сборки (выполняется с помощью
cmake --build) - Весь этап установки (выполняется с помощью
cmake --install) - Каждый вызов
ctestдля запуска тестов (даже если тесты не найдены) - Каждый отдельный тест, выполняемый командой
ctest
Эти файлы сохраняются в дереве сборки до завершения индексации и выполнения всех пользовательских функций обратного вызова.
Примечание
Файлы фрагментов конфигурирования и генерации записываются CMake только после завершения этапа генерации. При использовании cmake-gui(1) или ccmake(1) запуск только этапа конфигурирования без генерации файлов проекта не приведёт к созданию фрагментов конфигурирования. После запуска этапа генерации будет создан отдельный фрагмент конфигурирования для каждого запуска этого этапа.
Имя файла фрагмента имеет следующий синтаксис: <role>-<hash>-<timestamp>.json. Файл содержит следующие данные:
-
version -
Версия данных файла фрагмента, записанная как
{ "major": 1, "minor": N }, гдеN— последняя минорная версия. -
command -
Полная выполненная команда. Исключается, если
roleимеет значениеbuild. -
workingDir -
Рабочий каталог, в котором была выполнена команда
command. -
result -
Код завершения команды — целое число. Значение будет
null, еслиroleимеет значениеbuild. -
stdout -
Добавлено в версии 4.4.
Стандартный вывод, созданный командой. Включается только при активации параметром
captureOutputпараметр и еслиroleимеет одно из значений:compile,link,custom,installилиtest. Для фрагментовtestэто поле содержит объединённые потоки стандартного вывода и стандартного вывода ошибок. -
stderr -
Добавлено в версии 4.4.
Стандартный вывод ошибок, созданный командой. Включается только при активации параметром
captureOutputпараметр и еслиroleимеет одно из значений:compile,link,custom,installилиtest. Для фрагментовtestвывод ошибок объединяется сstdout, а значениеstderrвсегда пусто. -
role -
Тип выполненной команды, который принимает одно из следующих значений:
-
configure: этап конфигурирования CMake -
generate: этап генерации CMake -
compile: отдельный этап компиляции, запущенный во время сборки -
link: отдельный этап компоновки, запущенный во время сборки -
custom: отдельная пользовательская команда, запущенная во время сборки -
build: полный вызовmakeилиninja(не черезcmake --build). -
cmakeBuild: полный вызовcmake --build -
cmakeInstall: полный вызовcmake --install -
install: отдельный вызовcmake -P cmake_install.cmake -
ctest: полный вызов командыctest -
test: отдельный тест, выполненный с помощьюctest
-
-
target -
Цель CMake, связанная с командой. Включается только если
roleимеет значениеcompileилиlinkлибо еслиroleимеет значениеcustomи пользовательская команда привязана к цели с помощьюadd_custom_command(TARGET). В сочетании сcmakeContentэто позволяет получить значения свойств целиTYPEиLABELS. -
timeStart -
Время начала выполнения команды, выраженное в миллисекундах с начала эпохи системы.
-
duration -
Длительность выполнения команды в миллисекундах.
-
outputs -
Выходные файлы команды в виде массива. Включается только если
roleимеет одно из значений:compile,link,custom. -
outputSizes -
Размеры
outputsв байтах в виде массива. Для несуществующих файлов размер равен 0. Включается при тех же условиях, что и полеoutputs. -
source -
Исходный файл, который компилируется. Включается только если
roleимеет значениеcompile. -
language -
Язык исходного файла, который компилируется. Включается только если
roleимеет значениеcompileилиlink. -
testName -
Имя выполняемого теста. Включается только если
roleимеет значениеtest. -
config -
Конфигурация сборки, например
ReleaseилиDebug. Включается только еслиroleимеет одно из значений:compile,link,custom,install,test. -
traceFile -
Добавлено в версии 4.4.
Путь относительно каталога
dataинструментирования, указывающий на скопированный JSON-файл, созданный параметром-ftime-traceClang. Включается только при активации параметраcompileTraceпараметр и еслиroleимеет значениеcompile. Если команда компиляции не создала JSON-файл, значение равноnull. -
dynamicSystemInformation -
Содержит динамические сведения о хост-компьютере, на котором выполняется CMake. Данные собираются для каждого файла фрагмента, созданного CMake, непосредственно до и после выполнения команды. Включается только при активации параметром Файлы запросов v1.
-
beforeHostMemoryUsed -
Используемый объём памяти хоста в КиБ на момент
timeStart. -
afterHostMemoryUsed -
Используемый объём памяти хоста в КиБ на момент
timeStart + duration. -
beforeCPULoadAverage -
Средняя загрузка ЦП на момент
timeStartилиnull, если её невозможно определить. -
afterCPULoadAverage -
Средняя загрузка ЦП на момент
timeStart + durationилиnull, если её невозможно определить.
-
-
cmakeContent -
Путь к файлу содержимого CMake v1, расположенному в
dataи содержащему сведения об этапах конфигурирования и генерации CMake, в результате которых созданcommandв этом фрагменте. При использованииcmake-gui(1)илиccmake(1)это поле может иметь значениеnullдля всех этапов конфигурирования вплоть до последнего, предшествующего этапу генерации. -
showOnly -
Логическое значение, указывающее, был ли передан параметр
--show-onlyкомандеctest. Включается только еслиroleимеет значениеctest.
Пример:
{
"version": {
"major": 1,
"minor": 1
},
"command" : "\"/usr/bin/c++\" \"-MD\" \"-MT\" \"CMakeFiles/main.dir/main.cxx.o\" \"-MF\" \"CMakeFiles/main.dir/main.cxx.o.d\" \"-o\" \"CMakeFiles/main.dir/main.cxx.o\" \"-c\" \"<src>/main.cxx\"",
"role" : "compile",
"result" : 1,
"stdout" : "<compiler stdout>",
"stderr" : "<compiler stderr>",
"target": "main",
"language" : "C++",
"outputs" : [ "CMakeFiles/main.dir/main.cxx.o" ],
"outputSizes" : [ 0 ],
"traceFile" : "compile-trace/main.cxx-<hash>.json",
"source" : "<src>/main.cxx",
"config" : "Debug",
"dynamicSystemInformation" :
{
"afterCPULoadAverage" : 2.3500000000000001,
"afterHostMemoryUsed" : 6635680.0
"beforeCPULoadAverage" : 2.3500000000000001,
"beforeHostMemoryUsed" : 6635832.0
},
"timeStart" : 1737053448177,
"duration" : 31,
"cmakeContent" : "content/cmake-2025-07-11T12-46-32-0572.json"
}
Добавлено в версии 4.4: Формат JSON описан в машиночитаемом виде в this JSON schema.
Файл индекса v1
Файлы индекса содержат список файлов фрагментов v1. Такой файл служит точкой входа для навигации по данным инструментирования. Он создаётся при каждом индексировании и удаляется после выполнения всех заданных пользователем обратных вызовов.
-
version -
Версия данных файла индекса, записанная как
{ "major": 1, "minor": N }, гдеN— последняя минорная версия. -
buildDir -
Каталог сборки проекта CMake.
-
dataDir -
Полный путь к каталогу
<build>/.cmake/instrumentation/v1/data/. -
hook -
Имя обработчика, отвечающего за создание файла индекса. Помимо обработчиков, которые можно указать в одном из файлов запросов v1, этому значению может быть присвоено
manual, если индексирование выполняется вызовомctest --collect-instrumentation.Обратите внимание, что обработчик напрямую не определяет, какие данные могут быть доступны. Например, обработчик
postBuildможет включать фрагментыtestилиinstall, если эти этапы выполнялись после предыдущего индексирования. -
snippets -
Содержит список файлов фрагментов v1. В него входят все файлы фрагментов, созданные после формирования предыдущего файла индекса. Пути к файлам указаны относительно
dataDir.Список может быть пустым, если индексирование выполнялось дважды подряд, например при нескольких сборках с включёнными обработчиками
preBuildиpostBuild. -
trace -
Содержит путь к файлу трассировки Google. Он включает данные всех соответствующих
snippetsв файле индекса. Путь к файлу указан относительноdataDir. Включается только при активации параметром файлы запросов v1. -
staticSystemInformation -
Содержит статические сведения о хост-компьютере, на котором выполняется CMake. Если CMake не может определить значение какого-либо поля, оно будет равно
null. Описание каждого из следующих полей см. в документации командыcmake_host_system_information().Включается только при активации параметром файлы запросов v1.
OSNameOSPlatformOSReleaseOSVersionfamilyIdhostnameis64BitsmodelIdmodelNamenumberOfLogicalCPUnumberOfPhysicalCPUprocessorAPICIDprocessorCacheSizeprocessorClockFrequencyprocessorNametotalPhysicalMemorytotalVirtualMemoryvendorIDvendorString
Пример:
{
"version": {
"major": 1,
"minor": 0
},
"hook": "manual",
"buildDir": "<build>",
"dataDir": "<build>/.cmake/instrumentation/v1/data",
"snippets": [
"configure-<hash>-<timestamp>.json",
"generate-<hash>-<timestamp>.json",
"compile-<hash>-<timestamp>.json",
"compile-<hash>-<timestamp>.json",
"link-<hash>-<timestamp>.json",
"install-<hash>-<timestamp>.json",
"ctest-<hash>-<timestamp>.json",
"test-<hash>-<timestamp>.json",
"test-<hash>-<timestamp>.json",
],
"trace": "trace/trace-<timestamp>.json"
}
Добавлено в версии 4.4: Формат JSON описан в машиночитаемом виде в this JSON schema.
Файл содержимого CMake v1
Файлы содержимого CMake содержат сведения об этапах конфигурирования и генерации CMake. Каждый файл фрагмента v1 содержит путь к одному из этих файлов, соответствующему вызову CMake, в результате которого была создана связанная с ним команда.
Каждый файл содержимого CMake содержит следующее:
-
version -
Версия данных файла содержимого, записанная как
{ "major": 1, "minor": N }, гдеN— последняя минорная версия. -
project -
Значение
CMAKE_PROJECT_NAME. -
custom -
Объект с произвольными данными JSON, заданными пользователем с помощью функциональности пользовательского содержимого CMake команды
cmake_instrumentation(). -
targets -
Объект с целями CMake, индексированными по имени и имеющими соответствующие данные инструментирования. Каждая цель содержит следующее:
Файл трассировки Google
CMake может создавать файл в формате событий трассировки Google, чтобы упростить визуализацию собранных данных инструментирования. Включение параметра trace в файлах запросов v1 приводит к созданию такого файла в каталоге <build>/.cmake/instrumentation/v1/data/trace при каждом индексировании.
Созданные файлы трассировки содержат данные всех файлов фрагментов v1, перечисленных в текущем файле индекса.
Когда CMake удаляет данные инструментирования после индексирования, последний файл трассировки сохраняется, чтобы его можно было просмотреть вручную без использования пользовательских обратных вызовов.
Файлы трассировки хранятся в JSON Array Format, где каждому файлу фрагмента v1 соответствует один объект события трассировки. Каждое событие трассировки содержит следующие данные:
-
name -
Описательное имя, сформированное CMake на основе данных фрагмента.
-
cat -
Значение
roleиз файла фрагмента v1. -
ph -
В настоящее время всегда равно
"X", что обозначает «полные события». -
ts -
Значение
timeStartиз файла фрагмента v1, преобразованное из миллисекунд в микросекунды. -
dur -
Значение
durationиз файла фрагмента v1, преобразованное из миллисекунд в микросекунды. -
pid -
Не используется (всегда равно нулю).
-
tid -
Целое число от нуля до количества параллельных заданий, с которым выполнялись индексируемые процессы. Это синтетический идентификатор, вычисляемый CMake на основе значений
tsиdurвсех индексируемых файлов фрагментов, чтобы нагляднее показать параллельное выполнение процессов. -
args -
Содержит все данные из файла фрагмента v1, соответствующего этому событию трассировки.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/manual/cmake-instrumentation.7.html