Profile a process or command and produce a flame graph


0.1.94 years ago4 years agoMinified + gzip package size for @maxbrunsfeld/flame-graph in KB



Build Status

This library makes it easy to profile a process with dtrace on macOS and to format the results as a Flame Graph.

flame graph example

To use this tool within Atom, try the flame-graph Atom package.


npm install @maxbrunsfeld/flame-graph

Command Line Usage

To profile a running process:

$ generate-flame-graph -p $PID_TO_PROFILE

To stop profiling, kill the process with Control+C.

To create and profile a child process with a given command:

$ generate-flame-graph -c './test arg1 arg2'

Often, you're only interested in profiling a certain function (or functions). You can do this using the optional -f/--functions flag:

$ generate-flame-graph -p $PID --functions 'function1 function2'

Programmatic Usage

All of the functionality shown above is accessible programatically.

const {
} = require('@maxbrunsfeld/flame-graph')

async function test1 () {
  // Create and profile a child process
  console.log(await generateFlameGraphForCommand(
    './test arg1 arg2'
      functionNames: ['function1', 'function2']

  // Profile a running process
  const flameGraph = generateFlameGraphForProcess(
      functionNames: ['function1', 'function2']

  setTimeout(() => flameGraph.stop(), 100)
  console.log(await flameGraph.html)

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.