通过检查器收集跟踪事件数据
\Collect trace events data by inspector
import { Session } from 'node:inspector'; const session = new Session(); session.connect(); function post(message, data) { return new Promise((resolve, reject) => { session.post(message, data, (err, result) => { if (err) reject(new Error(JSON.stringify(err))); else resolve(result); }); }); } async function collect() { const data = []; session.on('NodeTracing.dataCollected', (chunk) => data.push(chunk)); session.on('NodeTracing.tracingComplete', () => { // done }); const traceConfig = { includedCategories: ['v8'] }; await post('NodeTracing.start', { traceConfig }); // do something setTimeout(() => { post('NodeTracing.stop').then(() => { session.disconnect(); console.log(data); }); }, 1000); } collect();'use strict'; const { Session } = require('inspector'); const session = new Session(); session.connect(); function post(message, data) { return new Promise((resolve, reject) => { session.post(message, data, (err, result) => { if (err) reject(new Error(JSON.stringify(err))); else resolve(result); }); }); } async function collect() { const data = []; session.on('NodeTracing.dataCollected', (chunk) => data.push(chunk)); session.on('NodeTracing.tracingComplete', () => { // done }); const traceConfig = { includedCategories: ['v8'] }; await post('NodeTracing.start', { traceConfig }); // do something setTimeout(() => { post('NodeTracing.stop').then(() => { session.disconnect(); console.log(data); }); }, 1000); } collect();