contentTracing
Собирает данные трассировки из содержимого модуля Chromium для поиска узких мест производительности и медленных операций.
Process: Main
Этот модуль не содержит веб-интерфейса. Для просмотра записанных треков, используйте trace viewer, доступного по адресу chrome://tracing в Chrome.
[!NOTE] You should not use this module until the
readyevent of the app module is emitted.
const { app, contentTracing } = require('electron')
app.whenReady().then(() => {
(async () => {
await contentTracing.startRecording({
included_categories: ['*']
})
console.log('Tracing started')
await new Promise(resolve => setTimeout(resolve, 5000))
const path = await contentTracing.stopRecording()
console.log('Tracing data recorded to ' + path)
})()
})
Методы
Модуль contentTracing имеет следующие методы:
contentTracing.getCategories()
History
| Version(s) | Changes |
|---|---|
None | This method now returns a Promise instead of using a callback function. |
Возвращает Promise<string[]> - возвращает массив групп категорий, как только все дочерние процессы признают запрос getCategories
Получить набор групп категорий. Группы категорий могут меняться при достижении новых путей кода. See also the list of built-in tracing categories.
NOTE: Electron adds a non-default tracing category called
"electron". This category can be used to capture Electron-specific tracing events.
contentTracing.startRecording(options)
History
| Version(s) | Changes |
|---|---|
None | The |
None | This function now returns a callback |
Возвращает Promise<void> - возвращается, как только все дочерние процессы признают запрос startRecording.
Начинает запись во всех процессах.
Запись начинается незамедлительно локально и ассинхронно в дочерних процессах, как только они получили запрос EnableRecording.
Если запись уже запущена, promise будет немедленно разрешен, поскольку одновременно может выполняться только одна операция трассировки.
contentTracing.stopRecording([resultFilePath])
History
| Version(s) | Changes |
|---|---|
None | This method now returns a Promise instead of using a callback function. |
None | The |
resultFilePathstring (опционально)
Возвращает Promise<string> - возвращает путь к файлу, который содержит данные трассировки, как только все дочерние процессы признают запрос stopRecording
Останавливает запись во всех процессах.
Дочерние процессы кэшируют данные трассировки и только изредка очищают и отправляют эти данные обратно в главный процесс. Это помогает свести к минимуму издержки трассировки, так как отправка данных трассировки через IPC может быть дорогостоящей операцией. Поэтому, чтобы окончить Chromium ассинхронно запрашивает все дочерние процессы, чтобы очистить оставшиеся данные трассировки.
Данные трассировки будут записаны в resultFilePath. Если resultFilePath является пустым или не указано, Данные трассировки будут записаны во временный файл, и путь будет возвращен в promise.
contentTracing.getTraceBufferUsage()
History
| Version(s) | Changes |
|---|---|
None | This method now returns a Promise instead of using a callback function. |
Возвращает Promise <Object> - разрешается с объектом, содержащим value и percentage максимального использования буфера трассировки
valuenumberpercentagenumber
Максимальное использование в различных процессах буфера трассировки в процентах от полного состояния.
contentTracing.enableHeapProfiling([options]) Экспериментально
History
| Version(s) | Changes |
|---|---|
None | API ADDED |
Returns Promise<void> - Resolves once heap profiling has been enabled.
Enable heap profiling for MemoryInfra traces. Equivalent to the --memlog switch in Chrome.
Only takes effect if the disabled-by-default-memory-infra category is included.
Needs to be called before contentTracing.startRecording().
Использование:
const { contentTracing } = require('electron')
async function recordTrace () {
await contentTracing.enableHeapProfiling()
await contentTracing.startRecording({
included_categories: ['disabled-by-default-memory-infra'],
excluded_categories: ['*'],
memory_dump_config: {
triggers: [
{ mode: 'detailed', periodic_interval_ms: 1000 }
]
}
})
await new Promise(resolve => setTimeout(resolve, 5000))
const filePath = await contentTracing.stopRecording()
}
To view the recorded heap dumps:
-
Download the breakpad symbols for your Electron version from the Electron GitHub releases
-
Clone the Electron source code
-
In your Chromium checkout for Electron, run this command to symbolicate the heap dump:
python3 third_party/catapult/tracing/bin/symbolize_trace --use-breakpad-symbols --breakpad-symbols-directory /path/to/breakpad_symbols /path/to/trace.json -
Open the symbolicated trace in
chrome://tracing(the Perfetto UI does not support memory dumps yet) -
Click on one of the
Msymbols -
Click on a
☰triple bar icon (e.g., in themalloccolumn)
