contentTracing
Collecte des données de traçage de Chromium pour trouver les goulets d'étranglement altérant les performance et les opérations trop lentes.
Process: Main
Ce module n'inclut pas d'interface web. Pour afficher les traces enregistrées, utilisez la visionneuse de traces, disponible sur chrome://tracing dans 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)
})()
})
Méthodes
Le module contentTracing possède les méthodes suivantes :
contentTracing.getCategories()
History
| Version(s) | Changes |
|---|---|
None | This method now returns a Promise instead of using a callback function. |
Retourne une Promise<string[]> - qui se résout avec un tableau de groupes de catégories une fois que tous les processus enfants ont reconnu la requête getCategories
Retourne un ensemble de groupes de catégories. Les groupes de catégories peuvent changer lorsque de nouveaux chemins de code sont atteints. See also the list of built-in tracing categories.
NOTE: Electron adds a non-default tracing category called
"electron". Cette catégorie peut être utilisée pour capturer des événements de traçage spécifiques à Electron.
contentTracing.startRecording(options)
History
| Version(s) | Changes |
|---|---|
None | The |
None | This function now returns a callback |
Retourne Promise<void> - résolu une fois que tous les processus enfants ont reconnu la requête startRecording.
Commencez à enregistrer sur tous les processus.
L'enregistrement commence immédiatement localement et de manière asynchrone sur les processus enfants dès qu'il reçoit la demande EnableRecording.
Si un enregistrement est déjà en cours, la promesse sera immédiatement résolue, car seule une opération de trace peut être en cours à la fois.
contentTracing.stopRecording([resultFilePath])
History
| Version(s) | Changes |
|---|---|
None | This method now returns a Promise instead of using a callback function. |
None | The |
resultFilePathstring (facultatif)
Retourne Promise<string> - résout avec un chemin vers un fichier qui contient les données tracées une fois que tous les processus enfants ont reconnu la requête stopRecording
Arrêter l'enregistrement sur tous les processus.
Les processus fils mettent généralement en cache les données de trace et ne suppriment que rarement et envoient données de trace au processus principal. Cela aide à minimiser les frais d'exécution de traçage puisque l'envoi de données de traces via IPC peut être une opération coûteuse. Ainsi, pour terminer le traçage, Chromium demande asynchrone à tous les processus enfants de vider les données de traces en attente.
Les données de trace seront écrites dans resultFilePath. Si resultFilePath est vide ou non fourni, les données de trace seront écrites dans un fichier temporaire, et le chemin sera retourné dans la promesse.
contentTracing.getTraceBufferUsage()
History
| Version(s) | Changes |
|---|---|
None | This method now returns a Promise instead of using a callback function. |
Retourne Promise<Object> - Résolution avec un objet contenant la valeur et pourcentage d'utilisation maximale du tampon de trace
valuenumberpercentagenumber
Récupère l'utilisation maximale sur les processus de mémoire tampon trace en pourcentage de l'état complet de .
contentTracing.enableHeapProfiling([options]) Experimental
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().
Utilisation:
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)
