Spec-Zone.ru › CMake

cmake-instrumentation(7)

Добавлено в версии 4.3.

  • Введение

    • Обзор
    • Сбор данных
    • Индексация

      • Функции обратного вызова
  • Включение инструментирования

    • Включение инструментирования на уровне проекта
    • Включение инструментирования на уровне пользователя
    • Включение инструментирования для отправки данных в CDash
  • API v1

    • Версия данных
    • Файлы запросов v1
    • Файлы данных v1
    • Файл фрагмента v1
    • Файл индекса v1
    • Файл содержимого CMake v1
    • Файл трассировки Google

Введение

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

configure

Configure.xml

generate

Configure.xml

compile

Build.xml

link

Build.xml

custom

Build.xml

build

не используется!

cmakeBuild

Build.xml

cmakeInstall

Build.xml

install

Build.xml

ctest

Build.xml

test

Test.xml

По умолчанию передаваемая в 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)
  • postCMakeInstall
  • postCMakeWorkflow
  • postCTest

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-trace Clang. Включается только при активации параметра 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.

  • OSName
  • OSPlatform
  • OSRelease
  • OSVersion
  • familyId
  • hostname
  • is64Bits
  • modelId
  • modelName
  • numberOfLogicalCPU
  • numberOfPhysicalCPU
  • processorAPICID
  • processorCacheSize
  • processorClockFrequency
  • processorName
  • totalPhysicalMemory
  • totalVirtualMemory
  • vendorID
  • vendorString

Пример:

{
  "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, индексированными по имени и имеющими соответствующие данные инструментирования. Каждая цель содержит следующее:

type

Свойство TYPE цели. Включаются только цели типов EXECUTABLE, STATIC_LIBRARY, SHARED_LIBRARY, MODULE_LIBRARY и OBJECT_LIBRARY.

labels

Свойство LABELS цели.

Файл трассировки 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API